Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
Delphi 8 Architect
|
Re: Oracle & Dyn Cursor & Bulk SQL
25. Aug 2004, 14:08
Hi Robert,
nicht wirklich kürzer und auch schlecht optimierbar für den Server (gilt aber für dynamic SQL allgemein), aber in MSSQL sähe es so aus - weis nicht, ob Du das in Ora nachbauen kannst:
SQL-Code:
--Beispieltabellen:
CREATE TABLE DeineSysTabelle ( FeldName varchar(255)
, TabellenName varchar(255))
INSERT INTO DeineSysTabelle (FeldName, TabellenName) VALUES (' Vorname', ' Personen')
INSERT INTO DeineSysTabelle (FeldName, TabellenName) VALUES (' Name' , ' Personen')
CREATE TABLE DeineDatenTabelle( Vorname varchar(255)
, Name varchar(255))
INSERT INTO DeineSysTabelle (Vorname, Name) VALUES (' Hans' , ' Wurst')
INSERT INTO DeineSysTabelle (Vorname, Name) VALUES (' Peter', ' Pan' )
DECLARE @FELD varchar(255)
, @TABELLE varchar(255)
, @ SQL nvarchar(4000) -- nimmt Statement für Cursordeklaration auf
DECLARE @MeinDynCur Cursor -- dynamischer Cursor
SET @ SQL = ' SET @MeinDynCur = CURSOR FOR SELECT '
DECLARE MeinStatCur
CURSOR FOR
SELECT FeldName
FROM DeineSysTabelle
OPEN MeinStatCur
FETCH NEXT
FROM MeinStatCur
INTO @FELD
, @TABELLE
WHILE @@Fetch_Status = 0 BEGIN -- durch Felder iterieren
SET @ SQL = @ SQL+@FELD+' , ' -- Feldliste ergänzen
FETCH NEXT
FROM MeinStatCur
INTO @FELD
, @TABELLE
END -- WHILE
SET @ SQL = @ SQL+' 0' -- PseudoFeld für letztes Komma
SET @ SQL = @ SQL+' FROM '+@TABELLE
SET @ SQL = @ SQL+' WHERE Bedingung'
-- CursorStatement fertig
EXEC sp_execustesql(@ SQL) -- legt Cursor an
OPEN @MeinDynCur -- öffnet ihn
...
Gruß aus Berlin
Tim Leuschner Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
|
|
Zitat
|