首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >T-SQL:无法将连接的字符串作为参数传递给存储过程

T-SQL:无法将连接的字符串作为参数传递给存储过程
EN

Stack Overflow用户
提问于 2009-06-25 16:17:41
回答 3查看 15.6K关注 0票数 23

Scenario:需要向存储过程传递n个参数。其中一个参数的类型为varchar(x)。该varchar参数需要从少数其他varchar变量构造。此问题使用SQL Server2005,但此行为适用于所有版本的SQL Server。

设置

代码语言:javascript
复制
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 '+'。通常,您可能认为数据类型是错误的(即变量的类型不同,但这会产生不同的错误消息)。

下面是一个正确的实现,它编译时没有错误:

代码语言:javascript
复制
SELECT @MyString= 'Hello ' + @MyBar + '" world! "' + @MyFoo + '".';

EXEC DoSomeWork @ID, @MyString

Question为什么不能处理变量字符作为参数的连接?它知道类型,因为它们被正确地声明为varchar。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1044831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档