sp_executesql 使用復雜的Unicode 表達式錯誤的解決方
導讀:1建站知識sp_executesql 使用復雜的Unicode 表達式錯誤的解決方法,需要的朋友可以參考下網站建設哪家好企業網站建設。
Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '+'. 當你嘗試執行下面這段代碼時,會得到如上這個錯誤提示。
復制代碼 代碼如下:
DECLARE @MyName NVARCHAR(100) DECLARE @FieldName SY網站推廣優化seoSNAME = N'Name' EXECUTE sp_executesql N'SELECT TOP 1 @Ou企業網站建設tputName = ['+ @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' 則無效。字符串的大小僅受可用數據庫服務器內存限制。在 64 位服務器中,字符串大小限制為 2 GB,即 nvarchar(max) 的最大大小。 解決問題,可以宣告一個變量如下代碼DECLARE @sql NVARCHAR(MAX),把帶動態的數據名,表名或是字段的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
變通一下,問題輕而易舉解決。相關網站建設哪家好企業網站建設。聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-21 ,文章sp_executesql 使用復雜的Unicode 表達式錯誤的解決方主要講述表達式,復雜,sp_executesql 使用復雜的Unic網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_3754.html