【问题标题】:Assigning single value select output from stored procedure to a variable (SQL Server)将存储过程中的单值选择输出分配给变量(SQL Server)
【发布时间】:2013-11-20 23:40:16
【问题描述】:

我有一个存储过程 GetNumberbyUniversalIDandGroup,它有 2 个输入参数并返回 SELECT 查询的结果。此查询有一行和一列(即单个值)。如何将其分配给调用存储过程中的变量?

我可以使用存储过程的结果吗?例如,以下内容似乎不起作用:

select * from (exec GetNumberbyUniversalIDandGroup '0032409901',1723817)

【问题讨论】:

  • 将其从存储过程更改为标量 UDF?
  • 这是一个在其他地方使用的现有存储过程,所以我无法更改它,我想使用它而不是创建新的东西
  • 但是没有简单的方法可以在查询中组合存储过程。它们不是为此而设计的。您可以使用新名称创建标量 UDF,然后将现有的存储过程设置为调用 UDF 的简单包装器 - 这样您至少不会得到重复的代码,并且现有的调用者不受影响。
  • 好吧,这听起来是个好主意。顺便说一句,有没有一种方法可以通过使用光标来提出替代解决方案?

标签: sql-server tsql


【解决方案1】:

你的存储过程必须有一个Return关键字,然后代码会是这样的:

 create proc myproc
 as 
 begin
     return 1
 end
 go
 declare @i int
 exec @i = myproc

或者如果你想保持你的存储过程不变,你可以使用临时表:

Insert Into #TempTable
Exec myproc

【讨论】:

  • 我不想更改 GetNumberbyUniversalIDandGroup 存储过程,因为它正被其他代码使用。是否可以同时返回一个 return 和一个 SELECT 查询?
  • 您可以使用临时表,我将其添加到我的答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2013-04-22
相关资源
最近更新 更多