當我嘗試使用sp_executesql的爲什麼我得到這個錯誤爲什麼我得到「程序期望參數'@statement'類型爲'ntext/nchar/nvarchar'。」當我嘗試使用sp_executesql?
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
?
當我嘗試使用sp_executesql的爲什麼我得到這個錯誤爲什麼我得到「程序期望參數'@statement'類型爲'ntext/nchar/nvarchar'。」當我嘗試使用sp_executesql?
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
?
聽起來就像你用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
解決的辦法是把一個N兩個他類型前面和SQL字符串來表示它是雙字節字符串:
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
這不是這裏的解決方案 - 這仍然會出錯,因爲你有它。解決方案是將VARCHAR變量更改爲NVARCHAR – AdaTheDev 2010-04-30 10:54:35
AdaTheDev,你是對的,我已經修復了現在 – 2010-04-30 11:10:02
你是如何執行它的?在T-SQL中?從一個程序?你是否傳遞了所需的「@statement」參數? – 2010-04-30 10:45:01