sql >> Databasteknik >  >> RDS >> Sqlserver

Kör en lagrad procedur i en annan lagrad procedur i SQL-servern

Om du bara vill utföra vissa specifika operationer av din andra SP och inte kräver tillbaka värden från SP gör du helt enkelt:

Exec secondSPName  @anyparams

Annars, om du behöver värden som returneras av din andra SP i din första, skapa då en temporär tabellvariabel med lika många kolumner och med samma definition av kolumnretur av andra SP. Sedan kan du få dessa värden i första SP som:

Insert into @tep_table
Exec secondSPName @anyparams

Uppdatering:

För att skicka parameter till andra sp, gör så här:

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

Exec secondSPName @id

Uppdatering 2:

Anta att din andra sp returnerar Id och Name där typ av id är int och name är av varchar(64) typ.

nu, om du vill välja dessa värden i första sp, skapa en tillfällig table variabel och infoga värden i den:

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

Select * From @tep_table

Detta kommer att returnera värdena som returneras av andra SP.

Hoppas, detta rensar alla dina tvivel.



  1. Problem med att importera en txt-fil till postgres med php

  2. SQL Saknar höger parentes på order by-sats

  3. PostgreSQL:kodningsproblem på Windows när du använder kommandoradsverktyget psql

  4. Tillåt null i unik kolumn