我正在与一个具有大约十几个参数的存储过程的客户合作。
我需要从数据库中的表中获取参数值,然后将它们输入存储过程以获取数值。然后我需要将此值加入到 SELECT 语句中。
我知道我必须构建一个临时表才能将 SP 结果与我的 select 语句结合起来,但这对我来说是全新的,可以使用一些帮助。主要关注如何将字段值输入 SP。我还希望 Temp 表包含几个作为字段的参数,这样我就可以将它加入到我的 select 语句中。
任何和所有的帮助表示赞赏。
谢谢你
我正在与一个具有大约十几个参数的存储过程的客户合作。
我需要从数据库中的表中获取参数值,然后将它们输入存储过程以获取数值。然后我需要将此值加入到 SELECT 语句中。
我知道我必须构建一个临时表才能将 SP 结果与我的 select 语句结合起来,但这对我来说是全新的,可以使用一些帮助。主要关注如何将字段值输入 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 临时表,并根据需要使用 SELECT 参数变量。
这是一个更好地格式化为答案的评论。
您无需创建临时表或表变量即可将数值结果与其他数据连接起来。下面演示了使用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