2010-12-13 4 views
1

J'ai une variable dans l'un de mes SP. J'ai quelque chose comme ceci dans mon SP:T_SQL Variable Problème

Declare @Statusid int 

SELECT @Statusid = ID 
FROM table1 a, table2 b 
WHERE a.col1 = b.col1 

Mais le SQL renvoie une seule valeur même s'il a plusieurs valeurs.

Quand je l'exécute Stmt SQL suivante je reçois plusieurs valeurs pour ID

SELECT ID 
FROM table1 a, table2 b 
WHERE a.col1 = b.col1 

Comment puis-je obtenir des valeurs multiples en utilisant la variable.

Répondre

0

Vous ne pouvez attribuer qu'une seule valeur à la variable, pourquoi ne pas utiliser une table temporaire?

CREATE TABLE #TEMPTABLE (
StatusID INT) 

INSERT INTO #TEMPTABLE(StatusID) SELECT ID FROM table1 a, table2 b WHERE a.col1 = b.col1 
-- USE THE TABLE AND THEN REMEMBER TO DELETE IT 
DROP TABLE #TEMPTABLE 
5

Vous ne pouvez pas. Une variable stocke une valeur à moins d'une table des variables

DECLARE @Status TABLE (Status int) 

INSERT @Status 
SELECT ID 
FROM table1 a JOIN table2 b ON a.col1 = b.col1 

Et utiliser un bon REJOIGNEZ s'il vous plaît, conformément à la norme ANSI-92 promulguée en

+0

LOL garçon sommes-nous sur la même page. Merci d'avoir corrigé ma faute de frappe BTW. – HLGEM

1

Vous ne pouvez pas - une variable peut contenir qu'un seul value sauf si est une variable de table. Que faites-vous avec la variable? Pourquoi ne pas simplement rejoindre les tables?

(Aussi, s'il vous plaît ne jamais utiliser qui impliquait rejoindre à nouveau la syntaxe, il est très mauvaise pratique de programmation qui conduit à des erreurs et est plus difficile à maintenir.)

1

La @Statusid variable ne peut avoir qu'une seule valeur. Il est probable qu'il stocke la toute dernière valeur. Pour voir cela un peu mieux essayer la

suivante
DECLARE @Statuses varchar(max) 

SELECT @Statuses = @Statuses + cast(ID as varchar) + ", " 
FROM table1 a 
    INNER JOIN table2 b 
    ON a.col1 = b.col1 

Print @Statuses 

En ce qui concerne cette question

Comment puis-je obtenir des valeurs multiples en utilisant la variable.

Pour quoi planifiez-vous la variable?