[NEWSboard IBMi Forum]
Seite 3 von 4 Erste ... 2 3 4 Letzte
  1. #25
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von BenderD Beitrag anzeigen
    ... alles per sql! Einmal commit/rollback am Ende der Transaktion und gut ist!

    D*B
    Dann aber mit SQL commit/rollback, richtig?

  2. #26
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das ist korrekt. Mit RPG Commit/Rollback klappt es nicht.
    Ich verwende i.Ü. immer den exec SQL für commit/rollback.
    Dann kommt man keinen Fehler von der RPG-Runtime.
    Übrigens:
    Auch bei reinen Lesevorgängen ist häufig bei fremden DB's ein Commit erforderlich, da hier gerne Autotransaction verwendet werden.
    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. #27
    Registriert seit
    Sep 2004
    Beiträge
    327
    @Baldur, vielen Dank, hat nun geklappt. Ein Commit / Rollback hat gereicht und beide Welten wurden schön zurückgefahren.
    @Dieter, auch Dir vielen Dank, aber noch eine Frage:
    In deinem Beispiel Programm verwendest Du *SQL als naming convention. Muss das so sein? Wir haben das Problem mit der Bibliotheksliste, weil die im CL zuvor dementsprechend nach test / live Umgebung gesetzt wird.
    Bei *SQL greift diese Liste ja nicht und es wird stattdessen das Schema genommen, welches dem User entspricht.
    Danke.
    Klaus

  4. #28
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Letzteres ist falsch, da man auch bei der Erstellung sowie zur Laufzeit die sog. Standardcollection setzen kann.
    Da eine DB i.d.R. in einer Lib zu sein hat, andere nennen das Schema, gibts für dieses Argument eigentlich keine Begründung.
    Da nun jede ACTGRP seine eigene SQL-Sitzung hat, kann eben jede ACTGRP auch sein eigenes Standardschema verwenden.
    Bei Oracle z.B. kann ich mit *SYS gar keine Verbindung aufmachen bzw. auf irgendeine Tabelle zugreifen.
    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. #29
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Letzteres ist falsch, da man auch bei der Erstellung sowie zur Laufzeit die sog. Standardcollection setzen kann.
    Da eine DB i.d.R. in einer Lib zu sein hat, andere nennen das Schema, gibts für dieses Argument eigentlich keine Begründung.
    Da nun jede ACTGRP seine eigene SQL-Sitzung hat, kann eben jede ACTGRP auch sein eigenes Standardschema verwenden.
    Bei Oracle z.B. kann ich mit *SYS gar keine Verbindung aufmachen bzw. auf irgendeine Tabelle zugreifen.
    Guten Morgen,
    wie geht man dann vor, damit die Tabelle gefunden wird, ohne die Bibliothek beim SQL Befehl angeben zu müssen? Wie gesagt im CL davor, wird die Libl festgelegt.
    Danke.
    Klaus

  6. #30
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Per exec "sql set schema ..." wird die Defaultcollection für die ACTGRP gesetzt.
    Dies kann natürlich auch in einem CLLE derselben ACTGRP vor Aufruf erfolgen.
    CLP geht nicht, da die ACTGRP dann eine andere ist.
    Alle unqualifizierten SQL's gehen dann auf dieses.
    Bereits geöffenete Cursor sind davon nicht betroffen.
    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. #31
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von itec01 Beitrag anzeigen
    Guten Morgen,
    wie geht man dann vor, damit die Tabelle gefunden wird, ohne die Bibliothek beim SQL Befehl angeben zu müssen? Wie gesagt im CL davor, wird die Libl festgelegt.
    Danke.
    Klaus
    Guten Morgen Klaus,

    ich bin zwar kein Freund von Datenbank und LIBL und halte das für Altlasten oder einen Designfehler, aber zuweilen muss man mit dem leben, was man vorfindet. SET SCHEMA ist nicht dasselbe, wie der Zugriff per LIBL (zuweilen sind Testumgebungen Vorschaltlibs, die nur einen Teil der Objekte enthalten, oder es gibt Mandanten spezifische Vorschaltlibs...) und das Handling ist auch ein wenig tricky (es wird unterschieden nach naming und static/dynamic SQL). Genauer und einfacher ist es, im Programm selber (beim init) die Bibliothek des Objektes per RTVOBJD oder API zu ermitteln und dann beim SQL mit einer Variablen zu qualifizieren.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #32
    Registriert seit
    Sep 2004
    Beiträge
    327
    Danke Euch. Ich hatte die Hoffnung, dass man mit set path = lib1, lib2 sich quasi eine Liste setzen kann, aber das funktioniert irgendwie nicht. Im RPG kann man mit sqlpath sich eine liste setzen, aber das ist halt nur zum Zeitpunkt der Umwandlung. Dann halt doch im SQLRPG entsprechend das SQL mit einer Variablen zu qualifizieren.

  9. #33
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Set Path in SQL entspricht lediglich dem CHGLIBL und kann nur bei *SYS sinnvoll verwendet werden.
    Ich stimme Dieter da zu. Allerdings gibt es u.a. auch Sachzwänge bei Standardprodukten, um die man herumstricken muss.
    Manche ERP-Anbieter erlauben noch nicht mal, einen Index an ihren Tabellen anzuhängen. Damit würde das ERP-Schema nicht mehr passen, Releaseupdates nicht mehr möglich oder was einem sonst noch so einfällt.
    Was ILE angeht so ist es tatsächlich mit ACTGRP's releativ einfach per set Schema den Default zu individualisieren. Man bekommt nur Probleme, wenn man Daten des ERP mit den eigenen Daten in einer Transaktion verarbeiten möchte.
    Dies scheitert dann auch bereits, wenn die Schemas in unterschiedlichen Journalen aufgezeichnet werden.

    Schemas mit Variablen zu qualifizieren klappt allerdings nur bei dynamischen SQL's.
    Alles was Objekte im SQL-Statement angeht, Schema, Table, Column, ist im statischen SQL nicht dynamisierbar. Vielleicht wird das ja doch mal irgendwann erweitert.
    Ein Set Schema vor dem Open reicht i.d.R. Allerdings beim Join auf eigene und ERP-Tabellen scheitert man dann schon wieder.

    ArdGate klappt ja nun nicht mit statischem SQL, was manchmal halt mühsam ist.
    Aber die SQL's kann man sich auch häufig ert mal per ODBC-Zugriffen via z.B. Squirrel zusammenstricken.

    Bei entsprechender Überlegung und dem von Dieter angesprochenen Design lässt sich jedoch alles lösen.
    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

  10. #34
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    ArdGate klappt ja nun nicht mit statischem SQL, was manchmal halt mühsam ist.
    Wie meinst Du das? Das machen wir doch so aktuell!
    Excec DROP TABLE xx und nicht drop table &lib.xx

  11. #35
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Man bekommt nur Probleme, wenn man Daten des ERP mit den eigenen Daten in einer Transaktion verarbeiten möchte.
    Dies scheitert dann auch bereits, wenn die Schemas in unterschiedlichen Journalen aufgezeichnet werden.

    ArdGate klappt ja nun nicht mit statischem SQL, was manchmal halt mühsam ist.
    ... das mit den Journalen war einmal und ist nicht mehr.
    Delete, insert, update, create, drop etc. geht auch static, call geht nur dynamic, lesen nur dynamic mit cursor.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #36
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun ja, das mit dem dynamischen SQL hat sich z.ZT. ggf. ja erledigt, da der SQL-Precompiler ja alles akzeptiert, egal ob es vorhanden ist oder nicht, hauptsache die Syntax stimmt.
    Früher gabs was auf die Finger wenn ein Feld nicht da ist. Jetzt könnte ja alles eine Variable sein.
    Allerdings ist man bei manchen DB's auf dynamisches SQL angewiesen, da es bei Casts da durchaus spezifische Varianten gibt.
    Und so, wie der SQL-Server keine Anführungszeichen für Namen mag, mag die IBM i keine eckigen Klammern.
    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. JVAGATE mit Sonderzeichen in CHAR-Feldern
    By Peet in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 16-04-20, 14:02
  2. JVAGATE und SQLRPG auf lokale DB2 for i
    By Peet in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 25-06-19, 11:59
  3. jvagate Bander tool Verbindung -> Oracle Hilfee
    By labm in forum NEWSboard Programmierung
    Antworten: 20
    Letzter Beitrag: 05-06-18, 09:09
  4. Problem mit JVAGATE von D.Bender
    By svit in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 18-09-14, 12:14
  5. aktuelle Liste aller offenen Commits je DB
    By itec01 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 08-07-14, 11:17

Tags for this Thread

Berechtigungen

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