SELECT from PROCEDURE – Prozeduren in Abfragen verwenden

 

Prozeduren lassen sich nicht in SELECT Statements verwenden. Sie müssen ausgeführt werden. Im Prinzip eine sehr logische Sache, da Prozeduren einerseits mehrere Ergebnistabellen zurückgeben könnte bzw. – wenn nur INSERT, UPDATE oder DELETE Statements ausgeführt werden würden – auch gar nichts zurückgeben müsste.

Ein paar Ausnahmen gibst allerdings schon 😉

Der Standardweg wäre, das Ergebnis der Prozedur in eine temporäre Tabelle zu schreiben und mit dieser dann weiter zu arbeiten.

Der Weg Nr 2, ist der Umweg mittels OPENROWSET. Eine AdHoc Abfrage auf einen SQL Server, in unserem Fall auf den eigenen. Die AdHoc Abfrage ist natürlich mit allen Einschränkungen zu genießen wie z.B.:

  • Geschwindigkeit
  • Es wird das erste Resultset zurückgegeben, falls es mehrere gäbe

Hier nun die simplen Beispiele

 

–Variante 1 – Temporäre Tabelle

 

create table #t1 (product varchar(50), total int)

insert into #t1

exec CustorderHist ‚ALFKI‘

 

select from #t1

 

–Variante 2 – OPENROWSET

 

 

Select from

    OPENROWSET(‚SQLNCLI‘,

                ‚Server=.;Trusted_Connection=yes;‘. Für lokale Std Instanz

                ‚exec northwind.dbo.custOrderHist “ALFKI“‘ProcTab

 INNER JOIN Products on P.ProductName = ProcTab.Productname

    where

        ProcTab.Total > 10

 

Cool, gell?

 


Author: Fumus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert