佳木斯湛栽影视文化发展公司

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

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

熱門標(biāo)簽:AI電銷 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 呼叫中心市場需求 鐵路電話系統(tǒng) 服務(wù)外包 百度競價排名 Linux服務(wù)器
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 表達(dá)式(例如使用 + 運(yùn)算符連接兩個字符串)??梢詤⒖迹篽ttp://technet.microsoft.com/zh-cn/library/ms188001.aspx
[ @statement = ] statement
包含 Transact-SQL 語句或批處理的 Unicode 字符串。statement 必須是 Unicode 常量或 Unicode 變量。不允許使用更復(fù)雜的 Unicode 表達(dá)式(例如使用 + 運(yùn)算符連接兩個字符串)。不允許使用字符常量。如果指定了 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 表達(dá)式錯誤的解決方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    巨野县| 绍兴县| 肃南| 普宁市| 闽清县| 屏边| 湛江市| 资兴市| 津市市| 佛山市| 泰安市| 镇原县| 高密市| 云龙县| 东平县| 庄浪县| 汤阴县| 剑河县| 花莲县| 大兴区| 延寿县| 南陵县| 郓城县| 甘洛县| 平果县| 阿拉善盟| 周口市| 郁南县| 长沙市| 县级市| 新田县| 龙口市| 丰镇市| 莎车县| 萨嘎县| 平阴县| 武定县| 天祝| 沧源| 东宁县| 湘潭县|