TSQL - 将表中的字段传递给存储过程,然后将结果存储在临时表中

时间:2012-08-28 16:49:02

标签: tsql stored-procedures temp-tables

我正在与一个拥有大约十几个参数的存储过程的客户一起工作。

我需要从数据库中的表中获取参数值,然后将这些值提供给存储过程以获取数字值。然后我需要将此值连接到SELECT语句。

我知道我必须构建一个临时表,以便用我的select语句加入SP结果,但这对我来说是全新的,可以使用一些帮助。主要关注如何将字段值提供给SP。我也希望Temp表包含几个参数作为字段,所以我可以将它加入我的select语句。

任何和所有帮助表示赞赏。

谢谢

2 个答案:

答案 0 :(得分:2)

您可以捕获声明变量中的参数值。类似的东西:

DECLARE @Parm1 int, @Parm2 varchar(50) -- Use appropriate names and datatypes

SELECT @Parm1 = Parm1ColumnName, @Parm2=Parm2ColumnName
FROM TableWithParmValues
-- Include a WHERE condition if appropriate

DECLARE @ProcOutput TABLE(outputvalue int) -- use appropriate names and datatypes to match output

INSERT @ProcOuptut
EXECUTE MyProc @ProcParm1 = @Parm1, @ProcParm2 = @Parm2 -- Use appropriate names

然后根据需要使用@ProcOutput临时表和参数变量。

答案 1 :(得分:0)

这是一个更好地格式化为答案的评论。

您无需创建临时表或表变量即可将数字结果与其他数据相关联。以下演示了使用SELECT s而不显式创建任何表的各种好奇心:

declare @Footy as VarChar(16) = 'soccer'
select * from (
  select 'a' as Thing, 42 as Thingosity
  union all
  select *
    from ( values ( 'b', 2 ), ( 'c', 3 ), ( @Footy, Len( @Footy ) ) ) as Placeholder ( Thing, Thingosity )
  ) as Ethel cross join
  ( select 42 as TheAnswer ) as Fred