2010-04-30 21 views

回答

162

聽起來就像你用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 
+0

這個解釋對我來說是完美的,並解決了我的問題。謝謝! – natur3 2015-04-21 17:56:11

+0

謝謝!幫了很多! – cangosta 2015-10-02 11:20:48

+0

不錯的男人。他在工作 – 2016-11-17 12:10:36

12

解決的辦法是把一個N兩個他類型前面和SQL字符串來表示它是雙字節字符串:

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

這不是這裏的解決方案 - 這仍然會出錯,因爲你有它。解決方案是將VARCHAR變量更改爲NVARCHAR – AdaTheDev 2010-04-30 10:54:35

+0

AdaTheDev,你是對的,我已經修復了現在 – 2010-04-30 11:10:02

相關問題