Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4284 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 ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Backup
Veeam Endpoint Backup findet SQL Datenbank nicht (1)

Frage von FFSephiroth zum Thema Backup ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Windows Server
Sql server 2014 installation auf einer windows server 2012r2 vm (5)

Frage von meister00 zum Thema Windows Server ...

Windows Server
Sql server 2014 failover (8)

Frage von meister00 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (17)

Frage von Driphex zum Thema Exchange Server ...

Zusammenarbeit
Als Administrator im Großraumbüro (16)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Hyper-V
HYPER V und USB (14)

Frage von Hendrik2586 zum Thema Hyper-V ...