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?