Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

T-SQL Cursor Ergebnisse in eine Varibale

Frage Entwicklung Datenbanken

Mitglied: ooAlbert

ooAlbert (Level 1) - Jetzt verbinden

31.10.2012 um 16:53 Uhr, 4416 Aufrufe, 2 Kommentare

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
Mitglied: thaenhusen
01.11.2012, aktualisiert um 07:59 Uhr
Moin.

Irgendwie fehlt die Into Anweisung in Deinem Skript...

01.
DECLARE @column_name varchar(max) 
02.
DECLARE @durchlauf_column_name varchar(max) 
03.
 
04.
DECLARE var_Cursor CURSOR FOR 
05.
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='tab_name' 
06.
OPEN var_Cursor 
07.
 
08.
FETCH NEXT FROM var_Cursor; 
09.
INTO @column_name 
10.
 
11.
WHILE @@FETCH_STATUS = 0 
12.
BEGIN 
13.
    Set @durchlauf_column_name = @column_name 
14.
    print @durchlauf_column_name 
15.
 
16.
    FETCH NEXT FROM var_Cursor 
17.
    INTO @column_name 
18.
END 
19.
CLOSE var_Cursor 
20.
DEALLOCATE var_Cursor 
21.
GO
HTH
MK
Bitte warten ..
Mitglied: ooAlbert
02.11.2012, aktualisiert um 09:52 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Festplatten, SSD, Raid
SSDs im Stresstest mit überraschenden Ergebnissen (3)

Link von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Server-Hardware
gelöst ILO 2 Integrated Remote Console, Cursor ist nicht synchron mit PC (9)

Frage von 114801 zum Thema Server-Hardware ...

Datenbanken
gelöst T-SQL: Inhalt verschiedener Spalten in eine Spalte schreiben (2)

Frage von Suilven zum Thema Datenbanken ...

Neue Wissensbeiträge
LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(2)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Windows 10

Microsoft veröffentlicht das "Fall Creators Update

(10)

Information von Penny.Cilin zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (20)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...