SELECT from PROCEDURE – Prozeduren in Abfragen verwenden


Andreas Rauch

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önnten bzw. - wenn nur INSERT, UPDATE oder DELETE Statements ausgeführt werden würden - auch gar nichts zurückgeben müssten.

Ein paar Ausnahmen gibt's 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 P on P.ProductName = ProcTab.Productname

    where

        ProcTab.Total > 10

 

Cool, gell?

 


Kommentare sind geschlossen