Anmelden

View Full Version : Dynamische SQL ohne Cursor



redsky
02-02-06, 08:43
Hallo ich möchte ein Dynamisches CREATE TABLE absetzen da ich einen zeitraum auswählen lasse.

wie kann ich dieses Statement dann absetzen?

ich habe es so Probiert:
c/exec sql
c+ prepare MyStmt from :MySql
c/end-exec

wobei MySql den Befehl enthält.

Danke für eure Hilfe.

MFG
Redsky

B.Hauser
02-02-06, 08:49
so:


/Free
WrkFile = %Trim(WrkFile) + %EditC(Monat: 'X');
SqlStm = 'Create Table ' + %Trim(WrkLib) + '/' + %Trim(WrkFile) +
' as (Select KUNDENR, Sum(WERT) as UMSATZ +
from UMSATZ +
Where Month(VerkDatum) = ' + %Char(Monat) +
' and Year(VerkDatum) = ' + %Char(Jahr) +
' Group By KUNDENR) +
with DATA ';
/End-Free
c/exec sql Execute immediate :SqlStm
C/End-exec


Birgitta

redsky
02-02-06, 09:36
danke für die rasche antwort hat super funktioniert

steven_r
19-09-06, 14:00
geht das auch in einer schleife so mit fetch next oder so?

ich möchte eine Statement zusammenstöpseln und dann in einer Schleife auslesen

mit cursor

C/EXEC SQL
C+ DECLARE C1 CURSOR FOR
c+ HIER DAS ZUSAMMENGESTÖPSELTE SQL
C/END-EXEC
C* ÖFFNEN DER SQL VERBINDUNG
C/EXEC SQL
C+ OPEN C1
C/END-EXEC


lg
steven_r

Fuerchau
19-09-06, 14:23
declare c1 cursor for statement MyStmt

Prepare MyStmt from :MySQL

Open C1

a) Fetch C1 into ....
b) Fetch C1 using :MYSQLDA

Bei Methode a) muss die Struktur bekannt sein, bei Menthode b) muss ich eine SQLDA-Struktur erstellen, die unter anderem Pointer auf Felder beinhaltet.

Beschrieben im SQL-Reference.

steven_r
19-09-06, 17:07
danke für die rasche hilfe

lg
steven_r

BenderD
19-09-06, 17:16
lass mal Statement weg!

declare c1 cursor for MyStmt

mfg

Dieter Bender