[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2003
    Beiträge
    290

    SQL Procedure mit SQL-Befehl als Parameter

    Hallo zusammen,

    wie kann ich in einer SQL-Procedure den als Parameter übergebenen fertigen SQL-Befehl in
    "DECLARE C1 CURSOR FOR" einsetzen bzw. nutzen ????

    Beispiel wie es nicht geht :=(

    CREATE OR REPLACE PROCEDURE data/kundesqp1
    ( IN PRSQLCMD CHAR(2048),
    INOUT PRRETURN CHAR(1)
    )
    RESULT SET 1
    LANGUAGE SQL
    BEGIN
    DECLARE C1 CURSOR FOR PRSQLCMD;
    OPEN C1;
    SET RESULT SETS CURSOR C1;
    END


    Irgendwie stehe ich da auf dem Schlauch...
    Danke vorab !

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Die SQL-Anweisung heißt "prepare statement...".

    prepare statementname from variable
    declare cursor name for statementname
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2003
    Beiträge
    290
    Danke !
    Manchmal steht man echt auf dem Schlauch...
    Also wie im SQLRPG, nur prepare nach dem declare !!!...ich habe es im SQLRPG immer anderes herum ?!

    ...ich bin auch der Meinung ich hätte das schon mal gemacht...finde es aber nicht mehr...

    Jetzt habe ich das eingebaut...und läuft :=)

    Für alle, denen das ggf. auch mal passiert...hier der Code....

    CREATE OR REPLACE PROCEDURE data/kundesqp1
    ( IN PRSQLCMD CHAR(2048),
    INOUT PRRETURN CHAR(1)
    )
    LANGUAGE SQL
    RESULT SET 1
    SET OPTION COMMIT=*NONE, DATFMT=*EUR

    BEGIN
    DECLARE C1 CURSOR FOR S1;
    PREPARE S1 FROM PRSQLCMD;
    OPEN C1;
    SET RESULT SETS CURSOR C1;
    END



    Danke nochmals !!!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wofür denn eigentlich diesen Umweg?
    Die Reihenfolge Declare/Prepare ist letztlich egal, da ja ein Declare nur eine Compiler-Anweisung ist.
    Entscheidend ist, dass zum Zeitpunkt des tatsächlichen Zugrffes alles da sein muss.

    Nachteil dieses Vorgehens:
    Der Cursor C1 gilt für die gesamte Verbindung/Sitzung.
    Solange der Cursor nicht geschlossen ist, kannst du kein neues Resultset anfordern!
    Dies sei zu bedenken.

    Zu bemerken ist das manchmal bei embedded SQL, dass ggf. bei einem Absturz des Programmes, Cursor nicht geöffnet werden können da sie noch offen sind.

    Für Übungszwecke ganz i.O.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2003
    Beiträge
    290
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wofür denn eigentlich diesen Umweg?
    Die Reihenfolge Declare/Prepare ist letztlich egal, da ja ein Declare nur eine Compiler-Anweisung ist.
    Entscheidend ist, dass zum Zeitpunkt des tatsächlichen Zugrffes alles da sein muss.

    Nachteil dieses Vorgehens:
    Der Cursor C1 gilt für die gesamte Verbindung/Sitzung.
    Solange der Cursor nicht geschlossen ist, kannst du kein neues Resultset anfordern!
    Dies sei zu bedenken.

    Zu bemerken ist das manchmal bei embedded SQL, dass ggf. bei einem Absturz des Programmes, Cursor nicht geöffnet werden können da sie noch offen sind.

    Für Übungszwecke ganz i.O.

    Hallo,
    die Reihenfolge war in der Procedure nicht egal, da ein Fehler beim create ausgegeben wurde.
    Der Cursor soll ja für die gesamte Sitzung gelten, das war das Ziel dieses Test's.
    Die Ergebnisse sind zufriedenstellend.
    Danke und Gruß

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Trotzdem hast du meine Frage nicht beantwortet:

    Warum eine Prozedur und nicht direkt im Code?
    Die Einschränkungen sind da schon nicht zu verachten, ins besonders wenn man an die Verwendung per ODBC/JDBC denken will.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jan 2003
    Beiträge
    290
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Trotzdem hast du meine Frage nicht beantwortet:

    Warum eine Prozedur und nicht direkt im Code?
    Die Einschränkungen sind da schon nicht zu verachten, ins besonders wenn man an die Verwendung per ODBC/JDBC denken will.


    Es ging um einen Test aus Net.Data heraus, teilweise "pur Net.Data", teilweise mit RPG.
    Vg.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Warum auch neue Funktionen nutzen, wenn das properitäre Net.Data auch noch geht;-).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Jan 2003
    Beiträge
    290
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Warum auch neue Funktionen nutzen, wenn das properitäre Net.Data auch noch geht;-).
    Ich mag das Geschwätz über Net.Data nicht, im Besonderen wenn man keine Erfahrung hat, und damit meine ich nicht "mal etwas mit gemacht" :=)
    Große Projekte sind damit easy zu realisieren, das ist dann allerdings etwas anderes als z.B. bei Shell in Dortmund.

    Und von "eingeschränkt" im Sinne von "properitär" kann überhaupt keine Rede sein !

Similar Threads

  1. JobQ und Parameter
    By camouflage in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-02-16, 18:40
  2. Procedure mit Datums Parameter aus SQLStatement aufrufen
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-01-15, 07:59
  3. Parameter Obj beim Befehl SAVOBJ
    By Bodo Roggenkamp in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 13-10-09, 16:05
  4. QRY und PARAMeter
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 17-01-08, 11:35
  5. Parameter empfangen in RPG??
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 02-04-03, 16:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •