2009-09-30 7 views
4

SQL Débutant ici, et j'ai un sacré moment de trouver ce qui devrait être un exemple de code simple pour répondre à ce que je pense est une question simple.Comment retourner la table à partir de la procédure stockée T-SQL

J'ai besoin d'écrire une procédure stockée qui fait trois choses dans l'ordre: 1) Sélectionnez les lignes d'une table 2) Mettre à jour les lignes dans une autre table, en utilisant les valeurs de la table des résultats dans # 1 3) Retour aux résultats table de # 1.

Ce que je ne trouve pas est un exemple sur la façon de retourner une telle valeur à partir d'une procédure stockée. Aussi, comment récupérer cette table retournée par l'appelant (qui est un autre script T-SQL).

+0

[Voir ici] (http://stackoverflow.com/questions/440308/tsql-returning-a-table-from-a-function-or-store-procedure) - une copie exacte près de cette question. Je l'ai trouvé en cherchant SO pour "Comment retourner la table à partir de la procédure stockée T-SQL" –

Répondre

5

Jetez un coup d'oeil à ceci.

DECLARE @Table1 TABLE(
     ID INT, 
     VAL int 
) 

INSERT INTO @Table1 (ID,VAL) SELECT 1, 1 
INSERT INTO @Table1 (ID,VAL) SELECT 2, 2 
INSERT INTO @Table1 (ID,VAL) SELECT 3, 3 

DECLARE @Table2 TABLE(
     ID INT, 
     VAL VARCHAR(MAX) 
) 

INSERT INTO @Table2 (ID,VAL) SELECT 1, 1 
INSERT INTO @Table2 (ID,VAL) SELECT 2, 2 
INSERT INTO @Table2 (ID,VAL) SELECT 3, 3 

--Lets say this is the 2 tables 


--now this will go into the sp 
UPDATE @Table1 
SET  Val = t1.Val + t2.Val 
FROM @Table1 t1 INNER JOIN 
     @Table2 t2 ON t1.ID = t2.ID 

SELECT t1.* 
FROM @Table1 t1 INNER JOIN 
     @Table2 t2 ON t1.ID = t2.ID 


--and you can insert into a var table in the tsql script that calls the sp 

DECLARE @Table1TSQL TABLE(
     ID INT, 
     VAL int 
) 

INSERT INTO @Table1TSQL (ID,VAL) EXEC YourSP 
+0

Bon, alors quelle est la syntaxe dans YourSP qui me permet de retourner une valeur? – Whiteknight

+3

les lignes correspondant à la dernière sélection seront retournées – CSharpAtl

+0

C'est exactement l'information que je cherchais. Merci CSharpAtl – Whiteknight

Questions connexes