[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Sql remote und local

    Hi *all
    ich hab folgendes SQL problem
    (die sql's sind syntaktisch richtig, das ist sicher)


    ich versuche mit SQLRPGLE in pgm 1 (actgrp *caller)
    connect reset
    connect to :Database
    (immer mit exec sql und endexec)

    in SQLRPGPGM 2 versuche ich ein (actgrp *caller)
    declare...
    close ...
    prepare ...
    open ...
    fetch first from c1 into :var

    in einem CL (actgrp *new)
    rufe ich SQLPGM1 mit database 1, dann
    sqlpgm2 dann
    sqlpgm1 mit database 2 dann
    sqlpgm2

    Ergebniss:
    nix geht, da ich SQLRPGLE mit rdb(*local) umwandel
    und kein sqlpackage erzeugt habe,da ich die rdb's für die das lauft nicht kenne (jedenfalls nicht alle) und bei n kundein ich ja n packages bräuchte (oder wie oder was)
    Wie ist soetwas zu lösen ?

    Danke
    Robi

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Schau dir mal den Befehl CRTSQLPKG an.
    Mit diesem kannst du das SQLPKG auf dem Zielsystem anlegen. Ohne geht leider nichts ! Die Berechtigung auf dem Zielsystem ist allerdings immer *PUBLIC *EXCLUDE.
    Aber Achtung:
    Immer wenn du an deinem Programm eine Änderung vornimmst, gibt es ein neues SQLPKG. Es funktioniert ähnlich dem Levelcheck. Wenn das Paket nicht passt, kommt keine Verbindung zustande.

    Übrigens:
    Die beiden SQLRPGLE-PGM'e sollten jeweils in einer eigenen festen Activationgroup laufen !!!

    Mit meinem Tool SQLCPY (auf meiner Homepage) kannst du allerdings auch schon einiges erreichen, teste es doch einfach mal.

    Alternative:
    SQLCLI ! Dies sind C-Routinen, für die du kein SQLPKG benötigst (analog ODBC-Aufrufen).

    Achja:
    Mit REXX brauchst du auch keine SQLPKG's.
    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
    Jun 2001
    Beiträge
    2.044

    Danke

    Hallo Furchau,
    Danke für die schnelle Antwort.
    Crtsqlpkg hatte ich schon gefunden (Aufgrund der Fehlermeldung). Was mir nicht passt(und ich auch nicht recht Begreife) ist, daß ich bei jedem Kunden nach Lieferung der Programme ein CRTSQLPKG auf jeder Maschine machen soll
    (Was für ein Verwaltungsaufwand)

    SQLCLI wär ja ein Versuch Wert, hast du eine Adresse mit einer kurzen Einführung / Erklährung o.ä ?

    Auch Rexx würd ich gerne mal lernen, (selbstverständlich zusätzlich zu dem 10 Stunden Arbeitstag)
    Hast du dazu einen Link ?

    Warum sollen die SQL's in eine benannten actgrp laufen ?
    (Unser Prinzip : 1. Pgm aus Menü = Weiche = actrgp *new,
    alle weitern *caller, Recursion (via pgmstack ermittelt) call via Weiche wieder in *new. + wenige ausnamen)

    SQLCPY : ist warscheinlich richtig gut, trifft aber auf wenig (Kauf)Zustimmung bei unseren Kunden. Sorry

    in der Hoffnung ein(ige) Link(s) zu bekommen
    Vielen Dank
    Gruß
    Robi

    Dan

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    SQLCLI und REXX findest du unter http://publib.boulder.ibm.com/iserie...2924/index.htm

    Benannte ACTGRP's sind deshalb von Vorteil, weil die Verbindung zu jeder DB offen bleiben kann. Ansonsten muss man immer mit "connect" die Verbindung umschalten.

    Was hindert dich, den CRTSQLPKG aus dem CLP aufzurufen ?

    SQLCPY spart aber jede Menge Programmierzeit. Was sind da schon €500 gegen 10 und mehr Stunden Programmieraufwand ?
    Ausserdem kann man dann mal "so eben" Daten zwischen Systemen austauschen.
    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
    Jun 2001
    Beiträge
    2.044
    [QUOTE=Fuerchau]SQLCLI und REXX findest du unter http://publib.boulder.ibm.com/iserie...2924/index.htm

    Danke, schau ich mir mal an


    Benannte ACTGRP's sind deshalb von Vorteil, weil die Verbindung zu jeder DB offen bleiben kann. Ansonsten muss man immer mit "connect" die Verbindung umschalten.

    ist in diesem Fall Sinn der Übung, erst alle Daten der
    1. AS400, dann alle der 2.

    Was hindert dich, den CRTSQLPKG aus dem CLP aufzurufen ?

    huch, äh dummheit + unwissen (hat jede as400 mit sql den CRTSQLPKG ?) das währ ja dann ganz einfach !!



    SQLCPY spart aber jede Menge Programmierzeit. Was sind da schon €500 gegen 10 und mehr Stunden Programmieraufwand ?
    Ausserdem kann man dann mal "so eben" Daten zwischen Systemen austauschen.

    Seh ich auch so, ich kann aber nicht den Nutzen direkt Nachweisen + 'Noch ein Softare Anbieter' + 'was ist mit Rel wechsel + was ist wenn wir eine neue as ...

    Danke
    Robi

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn SQL nicht automatisch auf jeder AS/400 verfügbar wäre, könnte man keine Anwendung ohne das SQL-Paket installieren.
    Wenn Programme mit embedded SQL ausgeliefert werden, muss das SQL-Produkt selbst nicht installiert sein. Dieses ist nur erforderlich, wenn man STRSQL oder STRQM verwenden will. SQLCLI ist genauso Bestandteil (wird z.B. von REXX verwendet).

    Ausserdem kannst du das SQLPKG als separates Objekt (CRTSQLPKG mit *LOCAL als DB) mit ausliefern und auf jedes Zielsystem kopieren lassen (immer in die QGPL).
    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
    Jun 2001
    Beiträge
    2.044
    Heist das, dass ich ein

    CRTSQLPKG *local

    mache, das Objekt ganz 'normal' mit meinem Projekt auf die Kundenmaschine(n) bringe und ich hab gar kein Problem ?!?

    Ich hab ja dann auf beiden AS400 den gleichen Stand!

    Wird *local nicht (wie *Libl bei ADDPFTRG) fest mit der DB im Obj verbunden.

    Immer Qgpl ? ist das Pflicht oder eine Empfehlung ?

    Nochmal Danke
    Robi

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Mit CRTSQLPKG werden nur die SQL's aus dem Programm extrahiert, an die DB gesendet und das SQLPKG erstellt.
    Der Name und die Lib werden durch den Parameter SQLPKG des CRTSQLRPGI festgelegt. Wenn deine Lib natürlich auf jedem System vorhanden ist, brauchst du die QGPL nicht, ansonsten wird auf dem Zielsystem das SQLPKG immer in der Lib gesucht, die beim CRTSQLRPGI angegeben ist. Daher sollte man hier ggf. auf die QGPL ausweichen.

    Der CRTSQLPKG verwendet genauso die DB-Angaben des WRKRDBDIRE wie dein Programm beim Connect.

    Um eine Verbindung zu einer RDB aufzunehemn MUSS ich diese mittels WRKRDBDIRE bekannt machen.
    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. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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