【问题标题】:Named stored proc parameters and concatenation [duplicate]命名存储过程参数和连接[重复]
【发布时间】:2012-09-27 19:56:03
【问题描述】:

可能重复:
Cast integer and concatenate to varchar in TSQL

如何使用具有更复杂值的命名参数调用存储过程。这是一个有点捏造的例子:

EXEC MyStoredProc @Param1='My name is: '+@Name

或者:

EXEC MyStoredProc @Param1=CONCAT('My name is: ',@Name)

尝试将文字字符串“我的名字是:”与变量 @Name 连接时出现错误。括号对这件事没有任何帮助。这是 T-SQL 的限制吗(即使用命名参数时,等号后面的表达式必须是单个文字或变量)?

谢谢

【问题讨论】:

  • 为什么你不能从源中传入一个连接字符串开始?
  • SQL Server 的限制。请参阅上面链接到的连接项目。

标签: sql-server-2008 tsql sql-server-2008-r2 sql-server-2012


【解决方案1】:

一种方式

declare @Var1 varchar(50)
select @Var1 = 'My name is: '+@Name

EXEC MyStoredProc @Param1=@Var1

函数也是如此

你不能这样做

EXEC MyStoredProc @Param1=getdate()

你需要做的

declare @Var1 datetime
select @Var1 = getdate()

EXEC MyStoredProc @Param1=@Var1

【讨论】:

  • 您可以内联调用 一些 函数(@@ 前缀的函数 - 所以 @@identity 有效,但 scope_identity() 无效)
  • 正确..虽然我认为@@ 更多的是系统变量而不是函数
  • 更新了标量函数调用示例...
  • 你必须在调用proc之前做concat
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多