PDA

View Full Version : Problem mit SQL stored procedure



rebe
25-06-03, 07:36
Hallo Leute!

Ich habe ein Problem eine einfache SQL stored procedure zu erstellen auf einer AS400 mit V5R2, klappt auf einer anderen mit V5R1 auch nicht.

Einfacher Code:
-----------------------------------
CREATE PROCEDURE CWOBJ/SP_GESPAL ()
LANGUAGE SQL

DELETE FROM CWOBJ/GEPAPF1
-----------------------------------
Programm interaktiv mit SQL erstellt.

call cwobj/sp_gespal
Abfrageoptionsdatei kann nicht abgerufen werden.
****: Debug-Nachrichten des Optimierungsprogramms für Abfrage werden
gestartet.
Der Zugriffsplan von OS/400 Query wurde wiederhergestellt.
Zugriff nach Eingangsfolge für Datei GEPAPF1 verwendet.
Abfrageoptionsdatei kann nicht abgerufen werden.
****: Debug-Nachrichten für Abfrage werden beendet.
ODP erstellt.
Offener Datenpfad (ODP) gelöscht.
311 Zeilen aus GEPAPF1 in CWOBJ gelöscht.
Zeiger für angegebene Position nicht gesetzt.
Anwendungsfehler. MCH3601 nicht überwacht durch SP_GESPAL bei Anweisung
0000000013, Instruktion X'0000'.


Das Programm macht was es soll, dann kommt aber immer hintendran der MCH3601.

Wenn ich die Prozedur in eine Quellendatei schreibe und mit RUNSQLSTM erstelle, bekomme ich 3 Listen

QSYSPRT REINER QPRINT CRTSQLCI RDY 5
13 extern struct GETDIAG_RTN_t SQLGetDiag(struct SQLCA *);
SP_GESPAL REINER QPRINT CRTCMOD RDY 6
13 |#pragma map (QSQLCLSE,"QSYS/QSQLCLSE")
SP_GESPAL REINER QPRINT SQL RDY 3
keine Anweisung 13

Die Anweisung 13 sagt mir nichts.

Wo kann denn das Problem liegen?

Vielen Dank für wichtige Hinweise.

Schönen Gruß
Reiner

Joe
26-06-03, 18:09
Folgende Info habe ich aus dem Internet, da ich mit dem gleichen Fehler konfrontiert wurde:



The SQL CALL statement must be used since there are special SQL parameters that
are passed on the stored procedure call - CL CALL or RPG CALL don't know how to
pass those hidden SQL parameters.



Wenn ich das Programm als SQL-CALL in einem SQLRPG starte, funktioniert es.



/EXEC SQL

/+ call lib/PGM ()

/END-EXEC


Gruss Joe

rebe
30-06-03, 10:05
Hallo Joe!

Das war der entscheidene Tipp.
Mit call bibl/prg ('') , also einem Pseudo-Parameter, kommt die Fehlermeldung nicht.

Vielen Dank.

Schöne Grüße
Reiner