最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2012年01月20日 19:51:44   作者:  
sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯誤的解決方法,需要的朋友可以參考下
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á)式(例如使用 + 運算符連接兩個字符串)??梢詤⒖迹?A target=_blank>http://technet.microsoft.com/zh-cn/library/ms188001.aspx
[ @statement = ] statement
包含 Transact-SQL 語句或批處理的 Unicode 字符串。statement 必須是 Unicode 常量或 Unicode 變量。不允許使用更復(fù)雜的 Unicode 表達(dá)式(例如使用 + 運算符連接兩個字符串)。不允許使用字符常量。如果指定了 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


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

相關(guān)文章

最新評論

甘肃省| 错那县| 安丘市| 大田县| 井冈山市| 和硕县| 沂水县| 千阳县| 平远县| 广东省| 济宁市| 永城市| 南木林县| 临漳县| 什邡市| 涿鹿县| 陈巴尔虎旗| 苏州市| 岐山县| 措美县| 高邮市| 江陵县| 沾化县| 犍为县| 阜南县| 辽宁省| 新兴县| 嘉荫县| 麻城市| 安乡县| 广宁县| 额济纳旗| 永康市| 泾源县| 郁南县| 辽宁省| 成都市| 桐城市| 响水县| 唐山市| 孝感市|