[NEWSboard IBMi Forum]

Thema: SQL - Frage

  1. #1
    Registriert seit
    Oct 2006
    Beiträge
    46

    SQL - Frage

    Hallo,

    ich habe SQL-Statements verwendet. Die übliche Reihenfolge:
    - Declare
    - Open
    - Fetch.

    Die Eingabedatei ist geschlüsselt, lese sie aber mit Order By in einer anderen Reihenfolge.

    Das Lesen geschieht aber nicht Satz für Satz sondern, und da liegt anscheinend das Problem, sondern aus einer anderen Datei werden die Schlüssel für diese Datei geliefert.

    Kann es sein, daß der komplette Vorgang: Cursor wieder schliessen, Deklarieren, Open und dann Lesen wiederholt werden muss?

    Momentan erhalte ich nur die Meldung: Kein Satz vorhanden, da nicht alle Schlüssel in der Datei vorhanden sind.

    Bitte um Hilfe.

    Gruss

    Stefan Heyden


    *================================================= ========================
    d FDBVALR e ds ExtName(FDBVAL)
    d FDBNUMV e ds ExtName(FDBNUMView)
    d FDBCLIR e ds ExtName(FDBCLI)

    *................................................. ........................
    * WorkFields
    *...........
    d WF_NUREFE s like(NUREFE)
    d WF_NUGRE s like(NUGRE)
    d WF_NURUB s like(NURUB)
    d WF_NUMON s like(NUMON)
    d WF_NUTYPE s like(NUTYPE)
    d WF_NUNIV s like(NUNIV)
    d WF_VLVALR s like(VLVALR)
    d WF_VLVALS s like(VLVALS)
    d WF_CLRACI s like(CLRACI)
    d WF_Emittent s like(ISEMIT)


    c/Exec Sql
    c+ Declare Cursor_FDBNUM Cursor
    c+ For Select *
    c+ from FDBNUMVIEW
    c+ where NUREFE = :WF_NUREFE and
    c+ NUGRE = :WF_NUGRE and
    c+ NURUB = :WF_NURUB and
    c+ NUMON = :WF_NUMON and
    c+ NUTYPE = :WF_NUTYPE and
    c+ NUNIV = :WF_NUNIV
    c+ order by NUREFE,
    c+ NUGRE,
    c+ NURUB,
    c+ NUMON,
    c+ NUTYPE,
    c+ NUNIV
    c+ for Read Only
    c/End-Exec
    :
    :
    *------------------
    * File: FDBNUM
    *------------------
    c/Exec Sql
    c+
    c+ Open Cursor_FDBNUM
    c+ using :WF_NUREFE,
    c+ :WF_NUGRE,
    c+ :WF_NURUB,
    c+ :WF_NUMON,
    c+ :WF_NUTYPE,
    c+ :WF_NUNIV
    c/End-Exec
    c
    c If SqlStt = SqlSttOk
    c Eval CsOpen = True
    c Else
    c Eval CsOpen = False
    c Eval SqlStmt = OpenLbl
    c EndIf*================================================= ========================
    * Get_FDBNUM - Lesen Satz in FDBNUM
    *................................................. ........................
    c Get_FDBNUM Begsr
    c Clear WF_ReadKz
    c movel '4' WF_NUNIV
    c movel '000' WF_NUGRE
    c movel '000' WF_NURUB
    c movel '000' WF_NUMON
    C movel '281' WF_NUTYPE
    c movel(p) ISIN WF_NUREFE

    c/Exec Sql
    c+ Fetch Cursor_FDBNUM
    c+ Into :FDBNUMV
    c+
    c/End-Exec

    c Select
    c When SqlStt = SqlsttOk
    c If PgmErr = True
    c Eval WF_ReadKz = 'F'
    c EndIf

    c When SqlStt = SqlSttNoRow
    c Eval UpMoreRows = False
    c Eval WF_ReadKz = 'F'
    c
    c Other
    c Eval SqlStmt = FetchLbl
    c Movel 'FDBNUM' WF_TblName
    c ExSr UpSqlErr

    c EndSl
    c EndSr
    *================================================= ========================

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Der Declare ist nur einmal erforderlich und wird zur Compile-Zeit aufgelöst.
    Zur Laufzeit hast du Recht, dass jedesmal per Open/Fetch/Close die Daten gelesen werden müssen.

    Wenn du sicher bist, dass die Schlüssel genau einen Satz liefern kannst du das mit

    select * into :MyDS
    where ...

    erreichen. Ein Cursor wird dann nicht benötigt.
    Den Order By benötigst du nicht, da du ja nur einen Satz bekommst.
    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
    Oct 2006
    Beiträge
    46
    Danke für die Bestätigung. Wieder etwas gelernt.

    Gruss

    Stefan

Similar Threads

  1. SQL Frage
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 24-01-07, 19:17
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. Frage zu SQL UserDefinedFunction
    By cbe in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-08-06, 17:30
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Eine Frage zu SQL / Time
    By Jenne in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-08-05, 11:37

Berechtigungen

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