मुझे "प्रक्रिया के प्रकार" @ प्रत्याशा 'के प्रकार' नेक्स्ट / nchar /varvar 'के पैरामीटर की उम्मीद क्यों है। " जब मैं sp_executesql का उपयोग करने की कोशिश करता हूं?


96

मुझे यह त्रुटि क्यों आती है

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

जब मैं sp_executesql का उपयोग करने की कोशिश करता हूं?


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

जवाबों:


216

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

उदा। यह त्रुटि देगा क्योंकि @SQL को NVARCHAR होना चाहिए

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

इसलिए:

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

यह काम करता है, लेकिन अन्य जवाब (डैनियल रेनशॉ से) अधिक उपयोगी है, ज्यादातर समय। (क्योंकि यह व्यर्थ चर घोषणा की जरूरत नहीं है)
ब्रोंडाहल

22

इसका समाधान यह बताने के लिए है कि दोनों प्रकार और एसक्यूएल स्ट्रिंग के सामने एक एन रखा है, यह एक डबल-बाइट कैरेक्टर स्ट्रिंग है:

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

0

मुझे एक और छोटा विवरण याद आ गया था: मैं NVARCHAR के पीछे कोष्ठक "(100)" को भूल गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.