2010-04-30 16 views
64

क्यों जब मैं sp_executesql इस्तेमाल करने की कोशिश मैं यह त्रुटिमुझे "प्रक्रिया को पैरामीटर की अपेक्षा करता है" @tetext 'ntext/nchar/nvarchar' की आवश्यकता क्यों है। " जब मैं sp_executesql का उपयोग करने की कोशिश करता हूं?

Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. 

मिलता है?

+1

आप इसे निष्पादित करने का प्रयास कैसे कर रहे हैं? टी-एसक्यूएल में? एक कार्यक्रम से? क्या आप आवश्यक "@ स्टेटमेंट" पैरामीटर पास कर रहे हैं? –

उत्तर

162

लगता है जैसे आप sp_executesql को VARCHAR कथन के साथ कॉल कर रहे हैं, जब इसे NVARCHAR होना चाहिए।

उदा।

DECLARE @SQL NVARCHAR(100) 
SET @SQL = 'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 
+0

यह स्पष्टीकरण मेरे लिए सही था और मेरी समस्या तय की गई। धन्यवाद! – natur3

+0

धन्यवाद! बहुत मदद की! – cangosta

+0

अच्छा आदमी। –

12

समाधान और दोनों वह टाइप के सामने एसक्यूएल स्ट्रिंग में एक एन डाल करने के लिए यह एक होने का संकेत देता है: क्योंकि @SQL NVARCHAR

DECLARE @SQL VARCHAR(100) 
SET @SQL = 'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 

तो होने की जरूरत है यह त्रुटि दे देंगे डबल-बाइट वर्ण स्ट्रिंग:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 
+0

काम कर रहा है यह समाधान नहीं है - जो अभी भी आपके पास त्रुटि होगी। समाधान VARCHAR वैरिएबल को NVARCHAR – AdaTheDev

+0

AdaTheDev में बदलना है, आप सही हैं, मैंने अभी तय कर लिया है –

संबंधित मुद्दे

 संबंधित मुद्दे