Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изпълнете съхранена процедура в друга съхранена процедура в SQL сървър

Ако искате да извършите само някои специфични операции от втория си SP и не изисквате обратно стойности от SP, тогава просто направете:

Exec secondSPName  @anyparams

В противен случай, ако имате нужда от стойности, върнати от втория ви SP в първия ви, тогава създайте временна променлива на таблица с равен брой колони и със същата дефиниция на връщането на колони от втория SP. След това можете да получите тези стойности в първия SP като:

Insert into @tep_table
Exec secondSPName @anyparams

Актуализация:

За да предадете параметър на втория sp, направете това:

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

Exec secondSPName @id

Актуализация 2:

Да предположим, че вторият ви sp връща Id и Name където тип id е int и name е от varchar(64) тип.

сега, ако искате да изберете тези стойности в първия sp, тогава създайте временна table променлива и вмъкнете стойности в нея:

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

Select * From @tep_table

Това ще ви върне стойностите, върнати от втория SP.

Надяваме се, това изчисти всичките ви съмнения.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Всяка потребителска таблица трябва ли да има клъстериран индекс?

  2. Използвайте FILEGROUP_NAME(), за да върнете името на файлова група в SQL Server

  3. SQL Server 2008 Spatial:намерете точка в многоъгълник

  4. някакво ограничение на броя на връзките със SQL Server?

  5. Регистърът на транзакциите за базата данни е пълен