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

TSQL-将字段从表传递到存储过程,然后将结果存储在临时表中,tsql,stored-procedures,temp-tables,Tsql,Stored Procedures,Temp Tables,我正在与一个客户机合作,该客户机有一个包含十几个参数的存储过程 我需要从数据库中的表中获取参数值,然后将它们输入到存储过程中以获取数值。然后我需要将该值连接到SELECT语句 我知道我必须构建一个临时表,以便用select语句连接SP结果,但这对我来说是全新的,需要一些帮助。主要关注如何将字段值输入SP。我还希望Temp表包含两个作为字段的参数,以便将其连接到select语句 非常感谢您的帮助 谢谢您可以在声明的变量中捕获参数值。比如: DECLARE @Parm1 int, @Parm2 va

我正在与一个客户机合作,该客户机有一个包含十几个参数的存储过程

我需要从数据库中的表中获取参数值,然后将它们输入到存储过程中以获取数值。然后我需要将该值连接到SELECT语句

我知道我必须构建一个临时表,以便用select语句连接SP结果,但这对我来说是全新的,需要一些帮助。主要关注如何将字段值输入SP。我还希望Temp表包含两个作为字段的参数,以便将其连接到select语句

非常感谢您的帮助


谢谢

您可以在声明的变量中捕获参数值。比如:

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 temp表,并根据您的选择使用所需的参数变量。

这是一条格式更好的注释,可以作为答案

您不需要创建临时表或表变量,就可以将数值结果与其他数据连接起来。下面演示了在不显式创建任何表的情况下使用
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

这太棒了。我是否必须执行某种循环来遍历每一组列值,或者这段代码是否已经这样做了?INSERT/EXECUTE将获取所有行(来自第一个结果集)并将它们放入@PROCEUTOUP,因此不需要循环。如果需要使用多组参数多次调用存储过程,则需要一个循环。