Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

6. Juli 2007 um 16:08

SQL-Server: Ergebnisse aus einer Prozedur auffangen

Heute fragte mich ein Kollege, wie man in einer Prozedur die Ergebnisse aus einer anderen Prozedur "auffangen" kann. Das geht mit maximal einem ResultSet. Wenn die Prozedur mehrere liefert, dann geht es nicht.

Man benötigt dazu eine Table-Variable oder eine (temporäre) Tabelle. In folgenden Beispiel wird das Ergebnis der Prozedur "sp_who" aufgefangen:

create table #temp(
id integer identity(1,1) not null primary key,
spid integer not null,
ecid smallint not null,
status nvarchar(100) not null,
loginame sysname not null,
hostname sysname not null,
blk smallint not null,
dbname sysname null,
cmd nvarchar(2000) null,
request_id integer not null)

insert into #temp (spid, ecid, status, loginame, hostname,blk, dbname, cmd, request_id)
exec sp_who

select spid, ecid, status, loginame, hostname,blk, dbname, cmd, request_id
from #temp

drop table #temp

So richtig schnell ist das allerdings nicht. Deswegen sollte man sich überlegen, lieber eine "table-valued function" einzusetzen. Das geht freilich nur, wenn in der Funktion keine Daten geändert werden.

6. Juli 2007 um 16:04

Hindernisse bei der Einführung des SQL-Servers-2005

Die letzte Umfrage des SQL-Server-Magazine beschäftigte sich mit der Frage was das größte Hindernis bei der Umstellung auf den SQL-Server-2005 war. Mich hat etwas befremdet, dass unser größtes Hindernis noch nicht mal zur Auswahl stand: die Inkompatibilitäten!

Hier geht es zu dem Artikel: Previous Poll Results
(man wird blöderweise auf die Übersichtsseite umgeleitet und muss das auf "What’s the biggest challenge you're facing as you move to SQL Server 2005?" klicken.)

|