读书人

一个关于exec的有关问题

发布时间: 2012-03-03 15:33:02 作者: rapoo

一个关于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

外值的替代符。值可以只是常或。值不可以是函或使用算子建立的算式等的算式。

读书人网 >SQL Server

热点推荐