2017-08-08 89 views
0

我有一个超过500的值的列表,每次我必须将这些值传递给下面的存储过程。是否可以动态调用这些值?将值传递给存储过程中的参数

RDBMS: SQL Server 2014 

小集合下面@value例子。

declare @valuetable table 
(
value varchar(50) 
) 

insert @valuetable 

select video union 
select audio union 
select hayward union 
select abott union 
select gsk 

代码:

DECLARE @value VARCHAR(24) SET @value = 'video'  
DECLARE @DAYS INT SET @DAYS = -30    


SELECT * INTO #XTP1 FROM (     
SELECT DISTINCT 'START' AS DTT, DATEADD(D,@DAYS,DATEACTIONED) AS DT FROM NEWREPORTS 
WHERE value = @value       
UNION       
SELECT DISTINCT 'CHANGE' AS DTT, DATEACTIONED AS DT FROM NEWREPORTS 
WHERE value = @value       
)r 

感谢

+0

在此查询中使用'in' –

+0

@chiragsatapara:但我希望一次只传递一个值,并将输出保存在excel – user3751360

+0

中,然后您必须从后端调用此循环的for循环。 –

回答

0

所以,你需要做的是一列添加到#XTP1存储值名称。那么你可以这样做:

declare @valuetable table 
(
value varchar(50) 
) 

insert @valuetable 

select video union 
select audio union 
select hayward union 
select abott union 
select gsk 

SELECT * INTO #XTP1 FROM (     
SELECT DISTINCT v.value, 'START' AS DTT, DATEADD(D,@DAYS,DATEACTIONED) AS DT 
FROM NEWREPORTS n INNER JOIN @valuetable v ON n.value = v.value       
UNION       
SELECT DISTINCT v.value, 'CHANGE' AS DTT, DATEACTIONED AS DT 
FROM NEWREPORTS n INNER JOIN @valuetable v ON n.value = v.value 
)r 

现在你可以从#XTP1中一次性检索所有东西。您可能会希望在您的ORDER BY中包含“值”。

+0

哦!无权更改表格结构。 – user3751360

+0

您是否有权创建表格?如果是这样,那么创建一个新的! –

+0

我可以创建一个新表,但每次都有一个填充旧表的ETL作业。 – user3751360

相关问题