PDA

View Full Version : SQL0326 ??



DEVJO
16-12-15, 09:13
Moin moin,

ich will folgenden Cursor definieren und hinterher mit einem Fetch in eine externe DS bringen...
wenn ich das Statement so ausführe, funzt es ohne Probleme....
Will ich aber einen Cursor davon erstellen bekomme ich den "Fehler" SQL0326
was heißt "Zu viele Variablen angegeben".

exec sql declare c1 cursor for
select *
from lib.datei e
where exists
(select 1 from lib2.datei2 i
where e.oje=i.oje and e.jahr=i.jahr
and e.folge=i.folge
and i.quartal <= :outJJJJQ);

Kann mir vielleicht einer einen Hinweis geben ?

Gruß
Joe

Fuerchau
16-12-15, 09:23
Dass der Fetch mehr Variablen haben will, als de DS aufweist.
Ggf. liegt ein LIBL-Problem beim Compile oder der Ausführung vor.

Prüfe mal im Spool die Anzahl der Felder des FETCH und der DS.

DEVJO
16-12-15, 09:39
Die Anzahl Spalten (46) stimmt überein, aber warum motzt er denn schon beim declarieren und nicht beim fetch?

B.Hauser
16-12-15, 10:32
SELEFCT * ist immer kritisch! Besser ist die benötigten Spalten anzugeben und auszulesen.

Ansonsten versuch's mal mit:

SELECT e.* ...

Birgitta

Fuerchau
16-12-15, 11:13
Der der Bezug auf die "Variablen" geht nehme ich mal an, dass die Variable in der Where-Klausel ggf. falsch deklariert, nicht eindeutig oder eine Struktur ist.

DEVJO
16-12-15, 12:00
hab ich schon beides versucht.....haut beides nicht hin....

Die Variablen sind soweit korrekt, und in den Dateien auch vorhanden.

andreaspr@aon.at
16-12-15, 12:34
vielleicht könnten mehr details weiter helfen.
Mit den bekannten Informationen sieht es nun mal so aus als ob die Anzahl der Felder in der DS nicht mit der der Tabelle übereinstimmen.

Fuerchau
16-12-15, 12:34
Der SQL0326 ist da etwas dürftig.
Der Compiler wirft doch einen Spool aus und markiert die fehlerhafte Zeile.
Aus deiner Quelle, die ja nicht alles zeigt, werde ich zumindest nicht schlau.

Da der Fehler beim Declare des Cursors auftritt muss der Fehler diese verwendete Variable meinen.

DEVJO
16-12-15, 12:42
Ich habe die declaration des Cursors mal verschoben an den Anfang der Quelle.

Nun gehts!