Aufruf einer gespeicherten Prozedur aus einer anderen gespeicherten Prozedur

Ich habe zwei ziemlich große und komplexe gespeicherte Prozeduren. Ich möchte eine zweite gespeicherte Prozedur aus der ersten gespeicherten Prozedur aufrufen. Beispielsweise:

-- stored_procedure_one select tb1.col1, tb1.col2, sp1.col3, sp1.col4 from table1 tb1 inner join stored_procedure_two sp1 on sp1.col1 = tbl1.col1 

Ist etwas ähnliches mit SQL wie das obige Skript gibt mir eine ungültige object Fehlermeldung.

Mit einem Temp-Tabelle ist nicht gut in diesem Beispiel, denn wenn ich das tat, würde es eine Stunde dauern, nur um die Temp-Tabelle mit allen data aus der zweiten gespeicherten Prozedur zu füllen. Ich möchte nur, dass die gespeicherte Prozedur die benötigten data zurückgibt.

Das wird nicht funktionieren. Sie können sich nicht an einer gespeicherten Prozedur beteiligen. Allerdings könnten Sie erwägen, save_procedure_two in eine tabellarische benutzerdefinierte function zu ändern. Du könntest dann über eine Cross Apply "join". Ich habe das bei zahlreichen Gelegenheiten gemacht und es funktioniert ganz gut.

Wenn die zweite gespeicherte Prozedur zu groß und komplex ist, kann es nicht möglich sein, in eine UDF umzuwandeln. In diesem Fall denke ich, dass Ihre einzige Alternative ist, die Ergebnisse der zweiten gespeicherten Proc zu einer Tabelle zu speichern und sich daran zu beteiligen. Aber das könnte etwas ineffizient und unordentlich sein.

Sie können die Ergebnisse der zweiten Prozedur in einer lokalen variablestabelle hinzufügen

 DECLARE @Table TABLE ( Col1 int, Col2 ... ) INSERT INTO @Table EXEC stored_procedure_two select tb1.col1, tb1.col2, sp1.col3, sp1.col4 from table1 tb1 inner join @Table tbl2 on sp1.col1 = tbl1.col1