国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

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

2024-08-31 00:57:50
字體:
供稿:網(wǎng)友
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '+'.

當你嘗試執(zhí)行下面這段代碼時,會得到如上這個錯誤提示。

復制代碼 代碼如下:


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



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

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

復制代碼 代碼如下:


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



變通一下,問題輕而易舉解決。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚松县| 根河市| 金溪县| 北京市| 佛冈县| 余干县| 新余市| 雷山县| 江门市| 沈丘县| 读书| 武隆县| 大英县| 仙桃市| 铜川市| 汾西县| 汝州市| 沐川县| 罗定市| 邓州市| 蓬莱市| 松溪县| 德兴市| 岫岩| 西宁市| 香格里拉县| 隆昌县| 峨山| 申扎县| 辽宁省| 巴林左旗| 永平县| 开原市| 旌德县| 大邑县| 都兰县| 冕宁县| 英山县| 顺昌县| 阿拉善左旗| 沂源县|