Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Führen Sie eine gespeicherte Prozedur in einer anderen gespeicherten Prozedur in SQL Server aus

Wenn Sie nur einige bestimmte Operationen von Ihrem zweiten SP ausführen möchten und keine Werte vom SP zurückfordern möchten, tun Sie dies einfach:

Exec secondSPName  @anyparams

Andernfalls, wenn Sie Werte benötigen, die von Ihrem zweiten SP innerhalb Ihres ersten zurückgegeben werden, erstellen Sie eine temporäre Tabellenvariable mit der gleichen Anzahl von Spalten und mit derselben Definition der Spaltenrückgabe durch den zweiten SP. Dann können Sie diese Werte im ersten SP erhalten als:

Insert into @tep_table
Exec secondSPName @anyparams

Aktualisierung:

Um einen Parameter an den zweiten SP zu übergeben, tun Sie dies:

Declare @id ID_Column_datatype 
Set @id=(Select id from table_1 Where yourconditions)

Exec secondSPName @id

Aktualisierung 2:

Angenommen, Ihr zweites sp gibt Id zurück und Name wo Typ von id ist int und name ist von varchar(64) Typ.

Nun, wenn Sie diese Werte im ersten Schritt auswählen möchten, erstellen Sie eine temporäre table Variable und fügen Sie Werte ein:

Declare @tep_table table
(
  Id int,
  Name varchar(64)
)
Insert into @tep_table
Exec secondSP

Select * From @tep_table

Dies gibt Ihnen die vom zweiten SP zurückgegebenen Werte zurück.

Hoffe, das beseitigt alle Ihre Zweifel.