ooalbert
Goto Top

T-SQL Cursor Ergebnisse in eine Varibale

Hi,

ich hab hier den SQL Server 2008 R2. Ich möchte ganz gern kopierte aber noch leere Tabellen mit Inhalt füllen über den Insert Befehl.

Jetzt kann man ja nicht einfach den Stern Operator benutzen auch wenn die Spalten Namentlich und vom Datentyp her identisch sind zwischen der Kopie und dem Orginal. Um mir nun die ganze Schreiberei etwas zu vereinfachen dachte ich, das ich mittels:

SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='tab_name'

Die Tabellenspaltennamen in eine Variable zu überführen und die in das Insert Statement zu setzen.

Jetzt dachte ich weiter, ich lese die Spaltennamen zeilenweise aus und hänge die an eine Variable. Damit sowas geht hab ich die Curser Funktion gefunden:

DECLARE @var varchar(max)

DECLARE var_Cursor CURSOR FOR

SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='tab_name'

OPEN var_Cursor;
FETCH NEXT FROM var_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM var_Cursor;
END;
CLOSE var_Cursor;
DEALLOCATE var_Cursor;
GO

Die Anweisung erzeugt dann als Ausgabe die Spaltenanmen der Tabelle. Jedoch ist es mir bisher nicht gelungen das Teilergebnis pro Durchlauf an eine Variable zu binden.

Viell. ist das auch total trivial aber ich seh die Lösung nicht.

Grüße

Content-ID: 193565

Url: https://administrator.de/contentid/193565

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

thaenhusen
thaenhusen 01.11.2012 aktualisiert um 07:59:10 Uhr
Goto Top
Moin.

Irgendwie fehlt die Into Anweisung in Deinem Skript...

DECLARE @column_name varchar(max)
DECLARE @durchlauf_column_name varchar(max)

DECLARE var_Cursor CURSOR FOR
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='tab_name'  
OPEN var_Cursor

FETCH NEXT FROM var_Cursor;
INTO @column_name

WHILE @@FETCH_STATUS = 0
BEGIN
    Set @durchlauf_column_name = @column_name
    print @durchlauf_column_name

    FETCH NEXT FROM var_Cursor
    INTO @column_name
END
CLOSE var_Cursor
DEALLOCATE var_Cursor
GO

HTH
MK
ooAlbert
ooAlbert 02.11.2012 aktualisiert um 09:52:53 Uhr
Goto Top
Ich hab das eben ausprobiert und es wird etwas in die Variable geschrieben. Nachdem ich die Durchlaufvariable noch mit einem Startwert versehen habe ließ sich das ganze dann auch aufaddieren das dann eine Zeile mit den Spaltenanmen entstanden ist face-smile