sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法
發(fā)布日期:2022-01-20 11:01 | 文章來(lái)源:源碼中國(guó)
Incorrect syntax near '+'. 當(dāng)你嘗試執(zhí)行下面這段代碼時(shí),會(huì)得到如上這個(gè)錯(cuò)誤提示。
復(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
[ @statement = ] statement
包含 Transact-SQL 語(yǔ)句或批處理的 Unicode 字符串。statement 必須是 Unicode 常量或 Unicode 變量。不允許使用更復(fù)雜的 Unicode 表達(dá)式(例如使用 + 運(yùn)算符連接兩個(gè)字符串)。不允許使用字符常量。如果指定了 Unicode 常量,則必須使用 N 作為前綴。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 則無(wú)效。字符串的大小僅受可用數(shù)據(jù)庫(kù)服務(wù)器內(nèi)存限制。在 64 位服務(wù)器中,字符串大小限制為 2 GB,即 nvarchar(max) 的最大大小。 解決問(wèn)題,可以宣告一個(gè)變量如下代碼DECLARE @sql NVARCHAR(MAX),把帶動(dòng)態(tài)的數(shù)據(jù)名,表名或是字段的SQL語(yǔ)句賦值于這個(gè)變量, 然后用這個(gè)變量傳入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
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章