Transmettre le résultat d'une requête dans la procédure stockée

J'ai une procédure stockée qui accepte trois parameters.

Est-il possible d'appeler cette procédure stockée avec une requête en input?

À titre d'exemple, j'ai tableA .

 SELECT * FROM TABLEA | A | B | C | |---+---+---| | 1 | 2 | 3 | | 4 | 5 | 6 | 

Maintenant, y a-t-il un moyen que je puisse appeler

 EXEC sp_name (SELECT * FROM TABLEA) 

de sorte que la procédure stockée s'exécutera pour chaque ligne?

Mon raisonnement derrière ceci est que j'ai une procédure stockée qui doit être appelée pour plusieurs lignes. Je peux écrire un script pour le faire, mais je veux savoir s'il est possible de le faire avec TSQL.

La meilleure façon d'y parvenir consiste à créer votre deuxième procédure stockée en tant que fonction définie par l'user. Ensuite, vous pouvez l'appeler de cette façon:

 SELECT * FROM TableA CROSS APPLY dbo.yourUserFunction(column1, column2, etc) 

Ou, il peut y avoir un moyen de combiner les deux procédures stockées dans un set, mais je devrais voir ce qui était dans le deuxième que vous appelez.

Cette solution suppose que le T-SQL est en cours d'exécution sur SQL SERVER 2008 et au-dessus

  1. Créer une variable de type de table, Ceci doit être fait seulement une fois USE YOURDBNAME; Allez Create TYPE TableAType as Table (A int null,B int null, C int null); Cela crée une variable de type table dans les types de tables définis par l'user dans la database que vous utilisez actuellement.

  2. Dans votre proc Stored, Déclarez une variable de ce type de table. et Remplissez-le avec le contenu de la table A. Exemple:

     Create Procedure MyStoredProcedure1 AS Declare @TableB as TableAType; Insert into @TableB(A,B,C) Select A,B,C from TableA; 
  3. Créez votre Proc. Stockée principale

     Create Procedure MyStoredProcedure2 @TVP TableAType READONLY as EXEC sp_Name @TVP; 

Cela devrait faire le travail pour vous, Pour plus de reference, s'il vous plaît voir le lien ci-dessous # http://msdn.microsoft.com/en-us/library/bb510489%28v=sql.105%29.aspx

Techniquement, oui, mais votre appel au sproc est mal formaté.

 Exec sp_name 'SELECT * FROM TABLEA' 

ou

 Exec sp_name @sql1 = 'SELECT * FROM TABLEA' 

Cela dit, ce que vous essayez de faire n'est peut-être pas une bonne idée.