一个关于exec的问题
想让字符串中的@XML_FILE作为exec的返回值,但执行时遇到了
过程需要类型为 'ntext/nchar/nvarchar ' 的参数 '@statement '。问题,到底是什么问题呢???请各位高人指点迷津....
SET @exeString = 'SELECT @XML_FILE = ( ' +
'SELECT CONVERT(xml,T.c) ' +
'FROM OPENROWSET (BULK ' + char(39) + @XML_FILE_NAME + char(39) + ',SINGLE_BLOB) T(c)) '
print @exeString
exec sp_executesql @exeString, '@XML_FILE XML OUTPUT ',@XML_FILE OUTPUT
------解决方案--------------------过程需要类型为 'ntext/nchar/nvarchar ' 的参数 '@statement '。
----------
這個提示已經很明顯了。
語法
sp_executesql [@stmt =] stmt
[
{, [@params =] N '@parameter_name data_type [,...n] ' }
{, [@param1 =] 'value1 ' [,...n] }
]
引數
[@stmt =] stmt
包含 Transact-SQL 陳述式或批次的 Unicode 字串。stmt m 必須是 Unicode 常數或可以以隱含方式轉換為 ntext 的變數。更複雜的 Unicode 運算式是不允許的 (例如以 + 運算子串連二個字串),也不允許字元常數。如果指定常數,其前置字元必須是 N,例如,Unicode 常數 N’sp_who’ 是合法的,但字元常數 ‘sp_who’ 是不合法的。字串的大小僅受限於可用資料庫伺服器記憶體。
stmt 可以包含與變數名稱相同形式的參數,例如:
N 'SELECT * FROM Employees WHERE EmployeeID = @IDParameter '
stmt 中包括的每個參數必須在 @params 參數定義清單與參數值清單中都有對應的項目。
[@params =] N '@parameter_name data_type [,...n] '
包含嵌入 stmt 的所有參數之定義的字串。字串必須是 Unicode 常數或可以以隱含方式轉換為 ntext 的變數。每個參數定義包含一個參數名稱與資料型別。n 是指出額外參數定義的替代符號 (Placeholder)。stmt 中指定的每個參數都必須在 @params中定義。如果 stmt 中的 Transact-SQL 陳述式或批次不包含參數,就不需要 @params。參數的預設值為 NULL。
[@param1 =] 'value1 '
參數字串中定義的第一個參數值。這個值可以是常數或變數。stmt 中包括的每個參數都必須有參數值。如果 stmt 中的 Transact-SQL 陳述式或批次沒有參數,就不需要參數值。
n
額外參數值的替代符號。值可以只是常數或變數。值不可以是函數或使用運算子建立的運算式等較複雜的運算式。