Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wykonaj procedurę składowaną w innej procedurze składowanej na serwerze SQL

Jeśli chcesz wykonać tylko określone operacje przy drugim SP i nie potrzebujesz wartości z powrotem od SP, po prostu zrób:

Exec secondSPName  @anyparams

W przeciwnym razie, jeśli potrzebujesz wartości zwracanych przez drugiego SP wewnątrz pierwszego SP, utwórz tymczasową zmienną tabeli z taką samą liczbą kolumn i taką samą definicją zwracania kolumn przez drugiego SP. Następnie możesz uzyskać te wartości w pierwszym SP jako:

Insert into @tep_table
Exec secondSPName @anyparams

Aktualizacja:

Aby przekazać parametr do drugiego sp, wykonaj następujące czynności:

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

Exec secondSPName @id

Aktualizacja 2:

Załóżmy, że drugi sp zwraca Id i Name gdzie typ id to int i name jest z varchar(64) typ.

teraz, jeśli chcesz wybrać te wartości w pierwszym sp, utwórz tymczasową table zmienna i wstaw do niej wartości:

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

Select * From @tep_table

Spowoduje to zwrócenie wartości zwróconych przez drugiego SP.

Mam nadzieję, że to rozwiewa wszystkie Twoje wątpliwości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj kolumnę Datetime z UTC na czas lokalny w instrukcji select

  2. Napraw komunikat 241 „Konwersja nie powiodła się podczas konwersji daty i/lub czasu z ciągu znaków” w SQL Server

  3. SQL — różnica między COALESCE i ISNULL?

  4. Dlaczego ISNUMERIC('.') zwraca 1?

  5. Dla Nvarchar(Max) otrzymuję tylko 4000 znaków w TSQL?