Scenario:需要向存储过程传递n个参数。其中一个参数的类型为varchar(x)
。该varchar参数需要从少数其他varchar变量构造。此问题使用SQL Server2005,但此行为适用于所有版本的SQL Server。
设置
DECLARE @MyString varchar(500), @MyBar varchar(10), @MyFoo varchar(10)
SELECT @MyBar= 'baz '
SELECT @MyFoo= 'bat '
-- try calling this stored procedure!
EXEC DoSomeWork @MsgID, 'Hello ' + @MyBar + '" world! "' + @MyFoo + '".'
这将在SQL Server中产生异常:Incorrect syntax near '+'
。通常,您可能认为数据类型是错误的(即变量的类型不同,但这会产生不同的错误消息)。
下面是一个正确的实现,它编译时没有错误:
SELECT @MyString= 'Hello ' + @MyBar + '" world! "' + @MyFoo + '".';
EXEC DoSomeWork @ID, @MyString
Question:为什么不能处理变量字符作为参数的连接?它知道类型,因为它们被正确地声明为varchar。
https://stackoverflow.com/questions/1044831
复制相似问题