主頁 > 知識庫 > sp_executesql 使用復(fù)雜的Unicode 表達式錯誤的解決方法

sp_executesql 使用復(fù)雜的Unicode 表達式錯誤的解決方法

熱門標(biāo)簽:銀川高頻外呼回撥系統(tǒng)多少錢 陜西電銷外呼系統(tǒng)好用嗎 蘭州語音外呼系統(tǒng)運營商 沒聽見電話機器人幫你接 最新人工智能電銷機器人 成都電話外呼系統(tǒng)一般多少錢 數(shù)字匠心電銷機器人 al智能電話機器人 如何做地圖標(biāo)注圖鋪
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '+'.

當(dāng)你嘗試執(zhí)行下面這段代碼時,會得到如上這個錯誤提示。
復(fù)制代碼 代碼如下:

DECLARE @MyName NVARCHAR(100)
DECLARE @FieldName SYSNAME = N'Name'
EXECUTE sp_executesql N'SELECT TOP 1 @OutputName = ['+ @FieldName +'] FROM [dbo].[Member]',
N'@OutputName NVARCHAR(100) OUTPUT',
@MyName OUTPUT;
SELECT @MyName


問題出于不允許使用更復(fù)雜的 Unicode 表達式(例如使用 + 運算符連接兩個字符串)??梢詤⒖迹篽ttp://technet.microsoft.com/zh-cn/library/ms188001.aspx
[ @statement = ] statement
包含 Transact-SQL 語句或批處理的 Unicode 字符串。statement 必須是 Unicode 常量或 Unicode 變量。不允許使用更復(fù)雜的 Unicode 表達式(例如使用 + 運算符連接兩個字符串)。不允許使用字符常量。如果指定了 Unicode 常量,則必須使用 N 作為前綴。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 則無效。字符串的大小僅受可用數(shù)據(jù)庫服務(wù)器內(nèi)存限制。在 64 位服務(wù)器中,字符串大小限制為 2 GB,即 nvarchar(max) 的最大大小。

解決問題,可以宣告一個變量如下代碼DECLARE @sql NVARCHAR(MAX),把帶動態(tài)的數(shù)據(jù)名,表名或是字段的SQL語句賦值于這個變量, 然后用這個變量傳入sp_executesql中。
復(fù)制代碼 代碼如下:

DECLARE @MyName NVARCHAR(100)
DECLARE @FieldName SYSNAME = N'Name'
DECLARE @sql NVARCHAR(MAX) = N'SELECT TOP 1 @OutputName = ['+ @FieldName +'] FROM [dbo].[Member]'
EXECUTE sp_executesql @sql,
N'@OutputName NVARCHAR(100) OUTPUT',
@MyName OUTPUT;
SELECT @MyName


變通一下,問題輕而易舉解決。

標(biāo)簽:鹽城 邢臺 遼源 宜春 朔州 通化 巴彥淖爾 本溪

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sp_executesql 使用復(fù)雜的Unicode 表達式錯誤的解決方法》,本文關(guān)鍵詞  executesql,使用,復(fù)雜,的,Unicode,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sp_executesql 使用復(fù)雜的Unicode 表達式錯誤的解決方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于sp_executesql 使用復(fù)雜的Unicode 表達式錯誤的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章