[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2006
    Beiträge
    129

    Varable SQL mit verschiedenen LIBS

    Hallo zusammen,

    erst mal ein gutes neues Jahr an alle.

    Ich habe ein Programm SQLRPGLE wo ich per SQL auf eine Datei zugreifen möchte die es in verschiedenen Libs gibt, die Umgebung kann sich der User aussuchen.

    Kann ich das im code varable gestalten?

    ungefähr so:
    /exec sql
    c+ SELECT sum(menge) as summe, kdnr c+ FROM :LIB/file
    c+ .............
    c/end-exec

    danke im vorraus
    mfg
    steven_r

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Dies geht leider nicht.
    Du musst dann vor Ausführung des Select's einen OVRDBF durchführen oder die Bibliothek in die LIBL aufnehmen (auch wenn Dieter dagegen ist).
    Wichtig ist dann allerdings NAMING=*SYS !

    Alternativ geht natürlich immer dynamisches SQL mit Prepare.
    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
    May 2006
    Beiträge
    129
    danke hab ich mir fast gedacht,
    werde es mit einen Dynamischen sql lösen.

    mfg
    steven_r

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    am saubersten mit set schema und dann unqualifiziert zugreifen. Die mittlere Huddelvariante geht mit dynamic SQL, die huddeligste Variante mit OVRDBF ...


    die oberhuddeligste Variante geht mit dem LIBL, die funktioniert nicht einmal zuverlässig, da dieser nur bei der ersten Zuordnung zieht.


    mfg

    Dieter Bender

    Zitat Zitat von steven_r
    Hallo zusammen,

    erst mal ein gutes neues Jahr an alle.

    Ich habe ein Programm SQLRPGLE wo ich per SQL auf eine Datei zugreifen möchte die es in verschiedenen Libs gibt, die Umgebung kann sich der User aussuchen.

    Kann ich das im code varable gestalten?

    ungefähr so:
    /exec sql
    c+ SELECT sum(menge) as summe, kdnr c+ FROM :LIB/file
    c+ .............
    c/end-exec

    danke im vorraus
    mfg
    steven_r
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    May 2006
    Beiträge
    129
    Hallo´,

    und wie funktioniert das mit SET SCHEMA?

    danke.

    lg
    steven_r

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Stimmt: SET SCHEMA überschreibt für unqualifizierte SQL's die NAMING-Konvention.

    Also Achtung:
    SET SCHEMA MYLIB
    select * from myfile <= wird in MYLIB gesucht
    SET SCHEMA DEFAULT
    select * from myfile <= wird in USER (*SQL) bzw LIBL(*SYS) gesucht

    "SET SCHEMA XXXX" kann auch dynamisch direkt per EXECUTE angewendet werden, ob XXXX exisitiert wird erst beim nächsten Zugriff geprüft. Im Zweifel heißt es lapidar "Datei nicht gefunden" und nich "XXX nicht gefunden".
    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
    Mar 2002
    Beiträge
    5.287
    Hallo,

    das geht sogar statisch

    MySchema = 'HUGO'

    // end free und exec sql gedöns

    SET SCHEMA :MySchema

    // end exec und free gedöns

    Ab jetzt gehen alle unqualifizierten Zugriffe auf die Datei im CURRENT_SCHEMA, das oben gesetzt wurde (naming *SQL, versteht sich)

    Im Fehlerfall kommt dann Datei Blablabla in HUGO nicht gefunden.

    mfg

    Dieter Bender


    Zitat Zitat von Fuerchau
    Stimmt: SET SCHEMA überschreibt für unqualifizierte SQL's die NAMING-Konvention.

    Also Achtung:
    SET SCHEMA MYLIB
    select * from myfile <= wird in MYLIB gesucht
    SET SCHEMA DEFAULT
    select * from myfile <= wird in USER (*SQL) bzw LIBL(*SYS) gesucht

    "SET SCHEMA XXXX" kann auch dynamisch direkt per EXECUTE angewendet werden, ob XXXX exisitiert wird erst beim nächsten Zugriff geprüft. Im Zweifel heißt es lapidar "Datei nicht gefunden" und nich "XXX nicht gefunden".
    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. #8
    Registriert seit
    Apr 2002
    Beiträge
    792
    Hi,

    auch in Sachen Performance ist das SET SCHEMA dem dynamischen SQL vorzuziehen.

    Gruß

    Sascha

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    @Dieter
    Auch bei Naming *SYS zieht dann CURRENT_SCHEMA (ich habs zumindest im STRSQL mal ausprobiert). Erst bei DEFAULT zieht wieder *LIBL.

    Kleiner Lacher:
    Ein LIB mit Namen DEFAULT funktioniert übrigens nicht
    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. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    current_schema ist wohl curlib und dann passt es wieder; das andere geht mit: set schema "DEFAULT"
    , das ist ein ähnlicher Effekt wie eine Spalte die USER heißt (reservierter Name in SQL)

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    @Dieter
    Auch bei Naming *SYS zieht dann CURRENT_SCHEMA (ich habs zumindest im STRSQL mal ausprobiert). Erst bei DEFAULT zieht wieder *LIBL.

    Kleiner Lacher:
    Ein LIB mit Namen DEFAULT funktioniert übrigens nicht
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    das sind eher wieder Erdnüsse, nach Wechsel des Schema muss auch vom Optimizer neu gerechnet werden.

    mfg

    Dieter Bender

    Zitat Zitat von JonnyRico
    Hi,

    auch in Sachen Performance ist das SET SCHEMA dem dynamischen SQL vorzuziehen.

    Gruß

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

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  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
  •