2017-08-08 1 views
0

J'ai une liste de valeur supérieure à 500 et chaque fois que je dois passer cette valeur à la procédure stockée ci-dessous. Sera-t-il possible d'appeler ces valeurs dynamiquement?Passage de valeur au paramètre dans la procédure stockée

RDBMS: SQL Server 2014 

petit ensemble d'exemple @value ci-dessous.

declare @valuetable table 
(
value varchar(50) 
) 

insert @valuetable 

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

code:

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 

Merci

+0

utiliser la requête 'in' pour ce –

+0

@chiragsatapara: mais je veux passer la valeur un à la fois, et enregistrer la sortie en excel – user3751360

+0

alors vous devez appeler cette api dans la boucle du backend. –

Répondre

0

Donc ce que vous devez faire est d'ajouter une colonne à # XTP1 pour enregistrer le nom de la valeur. Alors vous pouvez faire:

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 

Maintenant, vous pouvez récupérer tout de # XTP1 en une seule fois. Vous voudrez probablement inclure "valeur" dans votre ORDER BY.

+0

oh! Aucune permission de changer la structure de la table. – user3751360

+0

Avez-vous l'autorisation de créer une table? Si oui, alors créez-en un nouveau! –

+0

Je peux créer une nouvelle table, mais il y a un travail ETL qui a peuplé l'ancienne table à chaque fois. – user3751360