[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2008
    Beiträge
    90

    SQL0314, Host-Variable nicht eindeutig

    Hallo!

    Ich bekomme den Fehler SQL0314, Host-Variable nicht eindeutig.
    Für ein Projekt habe ich ein Service-Pgm erstellt und dazu eine Header-Datei (Member) erstellt. Jetzt verwende ich ein anderes Srv-Pgm und hab dazu mit /Copy dessen Header-File reingeholt und nun bekomme ich diesen Fehler.
    Hab diese Vorgehensweise aber schon bei vielen anderen Service-Programmen gemacht und noch nie Probleme gehabt.

    In beiden Header-Files hab ich mit /IF NOT DEFINED die Deklaration überprüft.
    Hier der Code in den Header-Files:

    /IF NOT DEFINED (SDS_QRPGLEH)
    /DEFINE SDS_QRPGLEH
    D SDS
    D SDS_PROGRAMID *PROC
    D SDS_JOB 244 253
    D SDS_USER 254 263
    /ENDIF

    Damit müßte doch eine doppelte Definition verhindert sein, oder?
    Nehm ich das /Copy vom zweiten Header-File raus, gehts.

    Die Variablen SDS_JOB u. SDS_USER will ich in einem Insert-Statement (SQL) verwenden.
    EXEC SQL
    Insert Into TEST
    Values ( :aaa
    , :bbb
    , :SDS_JOB
    , :SDS_USER
    )
    ;

    Bitte um Infos.

    Danke,
    Günter Bretterebner

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... mit soviel Raffinesse ist der SQLRPGLE Precompiler leicht mal überfordert. Am Besten behandelt man den so, als ob das noch RPGII wäre, dann bekommt man keinen Streit:
    - keine lokalen Variablen
    - keine qualified DS
    - alles für das SQL Geschäft global im Modul selber mit prefix HAL oder IBM definieren
    - vor dem SQL von deinen wirklichen Variablen in die Workfelder, nach SQL wieder aus den Workfeldern in die wirklichen Variablen, dann merkt der Precompiler nix von dem neueren Zeug, was er nicht wirklich kann.

    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/

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121
    Zitat Zitat von BenderD Beitrag anzeigen
    .... prefix HAL ...

    D*B
    2001: Odyssee im Weltraum lässt grüssen ;-)

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... ich hätte ja auch Prefix RPK nehmen können, aber das hätte dann wieder mal keiner verstanden, SQL darf man nämlich nicht nehmen...
    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
    Jan 2008
    Beiträge
    90
    Hallo!

    Danke für die schnellen Antworten.

    Hab die Felder SDS_JOB u. SDS_USER nun in lokale Variablen geschupft und diese ans SQL-Insert übergeben.

    Danke,
    Günter Bretterebner

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Der SQL Precompiler kann Compiler Directiven allenfalls mit den letzten Erweiterungen verarbeiten.
    Wenn Du allerdings zwei Copy-Strecken, in denen jeweils die Programm-Status-Datenstruktur hinterlegt ist einbinden musst und du Felder aus der Programm-Status-Datenstruktur als Host-Variablen in SQL-Statements verwenden willst, solltest Du eine der Copy-Strecken mit /INCLUDE statt /COPY einbinden.

    Grundsätzlich sollten in embedded SQL Copy-Strecken, in denen nur Definitionen und Informationen, die nicht von (embedded) SQL verwendet werden hinterlegt sind mit /INCLUDE eingebunden werden.
    Copy-Strecken, die mit /INCLUDE eingebunden werden, werden vom SQL Precompiler ignoriert.

    Übrigens:
    - Qualifizierte Datenstrukturen werden von dem SQL Precompiler seit Release V5R4 korrekt verarbeitet
    - Lokale Hostvariablen werden vom SQL Precompiler seit Release 6.1 korrekt verarbeitet
    - Verschachtelte Copy-Strecken werden von dem SQL Precompilier über Parameter im Compile-Befehl seit Release V5R3 korrekt verarbeitet.
    - Man sollte allerdings weiterhin keine Host-Variablen-Namen mit SQL beginnen lassen
    - Man sollte alles was den SQL-Precompiler nichts angeht und in Copy-Strecken hinterlegt ist mit /INCLUDE und nicht /COPY eingebunden werden.

    Birgitta
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Jan 2008
    Beiträge
    90
    Hallo Brigitta!

    Danke für die Info. Werde morgen mal mit /Include probieren. Will ja schließlich eine saubere Lösung.

    Gruß,
    Günter Bretterebner

    PS: War bei SQL-Kurs 9. - 12. Dez. 2013 in Kaufering

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Der SQL Precompiler kann Compiler Directiven allenfalls mit den letzten Erweiterungen verarbeiten.
    Übrigens:
    - Qualifizierte Datenstrukturen werden von dem SQL Precompiler seit Release V5R4 korrekt verarbeitet
    - Lokale Hostvariablen werden vom SQL Precompiler seit Release 6.1 korrekt verarbeitet
    - Verschachtelte Copy-Strecken werden von dem SQL Precompilier über Parameter im Compile-Befehl seit Release V5R3 korrekt verarbeitet.
    Birgitta
    übrigens:
    nach jedem Release Wechsel knallt es genau an diesen Punkten, wenn dann die PTFs wieder da sind, geht es wieder mal bis zum nächsten Release...

    ich erspare mir das wie oben beschrieben...

    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/

Similar Threads

  1. SQL insert mit variable
    By Robi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 21-03-03, 09:16
  2. Bibliotheksnamen Variable im Query einbauen?
    By DEVJO in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 06-03-03, 11:35
  3. Variable
    By Henrik Motzkus in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-03-02, 09:13
  4. ganzes Satzformat in Variable ?
    By hpw in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 15-10-01, 13:23
  5. HOST/400
    By Burgy Zapp in forum NEWSboard Server Software
    Antworten: 1
    Letzter Beitrag: 20-04-01, 17:07

Berechtigungen

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