[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    850

    Question SAVLIB und SQL Procedure

    Hallo zusammen,

    es ist jetzt aufgefallen das bei dem Befehl
    SAVLIB nicht alle in der Bibliothek
    vorhandenen SQL Stored Procedure gesichert werden.

    Reine SQL Stored Proceduren werden gesichert.
    Die SQL stored Proceduren die z.B auf ein RPG
    Programm zeigen werden nicht gesichert.

    Ist das schonmal jemandem aufgefallen ?

    Gruß
    Michael

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Reine SQL-Proceduren/Funkionen enthalten ihre Registrierungsinfos bzgl. der SQL-Repositories.
    SQL-Deklarationen, die auf externe Programme verweisen werden nur in die Repositories eingetragen, liegen also daher nicht im Objekt selber.
    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 2001
    Beiträge
    850
    Hi,

    und wie kann man diese Objekte dann Sichern
    und auf einem anderen System Zurückspeichern ?


    Gruß
    Michael

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    In dem man das SQL-Script zur Erstellung auf dem Zielsystem wiederholt.
    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
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von mk Beitrag anzeigen
    Hallo zusammen,

    es ist jetzt aufgefallen das bei dem Befehl
    SAVLIB nicht alle in der Bibliothek
    vorhandenen SQL Stored Procedure gesichert werden.

    Reine SQL Stored Proceduren werden gesichert.
    Die SQL stored Proceduren die z.B auf ein RPG
    Programm zeigen werden nicht gesichert.

    Ist das schonmal jemandem aufgefallen ?

    Gruß
    Michael
    Kann es sein, dass bei Dir die Stored Procedure und das RPG-Programm nicht in der gleichen Bibliothek liegen?

    Wir haben jede Menge von externen Stored Procedures, UDFs und UDTFs, die wir in SaveFiles sichern und ohne dass ein SQL Skript abläuft beim Kunden wieder installieren.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Laut Doku ist der Zeitpunkt der Erstellung der Prozedur entscheidend:
    Wenn das Objekt beim Create Procedure existiert, wird das im Objekt vermerkt.
    Man kann aber auch eine Procedure erstellen, bevor das Objekt vorhanden ist.

    Des weiteren (beim Entwickeln ist das ja halt so), wird ja beim CRTxxxPGM das Ursprungsobjekt in die QRPLOBJ verschoben (was ja so gut wie ein löschen ist).
    Die SQL-Registrierung wird aber mit verschoben und im neu erstellten Programm nicht automatisch wiederholt.

    Der Verweis im SQL-Repository ist aber ein dynamischer Verweis und funktioniert auf dem Entwicklungssystem ja weiter.

    Also:
    Nach einem CRTxxxPGM sollte der Create Procedure auch wiederholt werden um den Eintrag im PGM-Objekt zu bekommen.
    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 2001
    Beiträge
    850
    Hallo,

    seltsam.....

    Das Programm und die Stored Procedure sind in der
    gleichen Bibliothek.


    Hier mal ein Beispiel:

    Muss man evtl noch andere Parameter angeben ?


    PHP-Code:
    --  SQL generieren

    --  Version:
    --  
    Generiert am:               25.06.12
    --  Relationale Datenbank:
    --  
    Standardauswahl:            DB2 for i

    --  ***************************************
    --  
    Brückenprogramm call programs 
    --
    --  ***************************************


    -- 
    DROP PROCEDURE ASMTOOL/CALLPRCPHP ;


    CREATE PROCEDURE ASMTOOL/CALLPRCPHP   (

            
    OUT OUTPARM CHAR(132) ,
            
    IN ACT   CHAR(10) ,

            
    IN DELIM CHAR(1) ,

            
    IN PARMS CHAR(4096)

                                  )

            
    LANGUAGE RPGLE

            SPECIFIC ASMTOOL
    /CALLPRCPHP

            NOT DETERMINISTIC

            MODIFIES SQL DATA

            CALLED ON NULL INPUT

            EXTERNAL NAME 
    'ASMTOOL/PRCPHP01R'

            
    PARAMETER STYLE SQL ;



    COMMENT ON SPECIFIC PROCEDURE ASMTOOL/CALLPRCPHP

            IS 
    'Procedure Call Programs ' 

    Frage: Wenn ich im OpsNav eine Stored Proc. erstelle
    habe ich unter Umständen keine Source.

    Gruß
    Michael

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Jede SQL Routine hat auch einen Source Code auch wenn Du das Object über die Wizards im IBM i Navigator erstellst.

    Den Source Code kannst Du im IBM i Navigator über "Generate SQL" / "SQL Generieren" nachträglich erstellen und sichern.
    Alternativ kann man auch das API QSQGNDDL verwenden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Für die schnelle kann man sich auch über die Systemtabellen (QSYS2/SYSROUTINES) ein paar informationen auslesen lassen.
    Z.B. Anzahl der Ein/Ausgangsparameter, Externer Name, Result usw.

    Aber am einfachsten ist es wie Birgitta schon sagte über den Navigator.

    lg Andreas

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du eine Funktion/Prozedur mit "external ..." erstellst, wird KEIN Objekt erstellt sondern lediglich das SQL-Repositiory (SQLFunc/SQLProcs...) gefüllt.

    Wie oben beschrieben, schreibt SQL dann in das externe Programm (nicht sichtbar!) die Registrierungsinfos um im Restorefall das Repository zu füllen.

    Erstellst du aber das Programm NEU, gehen diese Infos verloren.
    In diesem Fall musst du halt "drop / create" wiederholen.
    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

Similar Threads

  1. SQL Stored Procedure
    By mk in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 14-08-12, 14:48
  2. SQL Stored Procedure / Bibliotheksliste
    By olbe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 19-08-08, 13:35
  3. SQL-Fehler -514 beim Aufruf eines variablen SQL über Stored Procedure
    By HDPSTANEKE in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-06-07, 14:33
  4. SQL Stored Procedure verschwindet
    By florian in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 17-05-06, 16:08
  5. Stored Procedure SQL Cursor Update
    By Jenne in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 14-06-05, 14:00

Berechtigungen

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