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.:
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?
In SQL Server 2016 wurde das sog. dynamic data masking eingeführt. Eine Möglichkeit Daten bei…
Seit Sharepoint Server 2007 präsentiert sich die Installation immer auf die gleiche Weise. Gerade mal,…
Es weihnachtet! Gerade bekam ich von einer Kollegin Plätzchen angeboten mit der Größe eines Diskus…
Nein, bitte nicht verwechseln: temporal tables haben nichts zu tun mit temporary tables table variables…
SQL Server 2016.. habe ich schon erwähnt, dass ich den ziemlich cool finde? Wollen wir…
Nach langer Zeit wieder mal eine Artikel von mir.. der mich besonders erfreut. SQL Server…