[NEWSboard IBMi Forum]

Thema: sql problem

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    im Prinzip gehört das was in dem with steht in eine View (deswegen sind Common Table Expressions eigentlich Schlunz)
    und auf Tables sollte man in der Applikation eh nicht zugreifen.

    D*B

    Zitat Zitat von woodstock99 Beitrag anzeigen
    so nun noch eine Frage bevor ich ewig im dunklen tappe.

    Mein SQL Befehl

    insert into ....

    with fullselect as (

    .......
    .......
    .......
    .......
    .......
    )

    select from fullselect
    where ( soll flexibel sein)

    Also dieser ganze Sql Befehl soll abgesetzt werden wobei ich mir die where per Programm zusammenbauen muß.

    Jetzt meine Frage: Wie würdet ihr das wo
    und wie einbauen (Ich meine nicht die where bedingung ).

    Alles ins RPG schreiben oder was anderes??
    Teile davon auslagern?? Wenn ja wie??


    Mir würden ein Paar Tipps wie man das angeht wirklich weiterhelfen.
    Danke
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Nov 2007
    Beiträge
    371
    Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    das hat mit intern beschrieben nix zu tun, ob da jemand in einem Programm einen Alfa Bandwurm irgendwie zerlegt, das ist SQL Schnurz, da kann der nix von wissen.

    wie sind die Dateien erstellt, wie sieht dein create view aus und was für eine Fehlermeldung bekommst du genau?

    BTW: anfangen tut man mit Normalisierung! und dieser ganze intern beschriebene Kram ist nicht einmal in erster Normalform; wenn man halt auf so einem Datenkompost hockt, dann muss man das von der Basis her ändern, oder man kommt nie aus dem Sumpf heraus.

    D*B

    Zitat Zitat von woodstock99 Beitrag anzeigen
    Danke aber das mir der view funktioniert nicht da einige Dateien Programmbeschriebene Dateien sind und die gute As400 eine Fehlermeldung bringt. Siehe weiter oben!!!!!!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Nov 2007
    Beiträge
    371
    ja da geb ich Dir recht , nur hier ist zu 80 % alles Programmbeschrieben deshalb tu ich mich auch so schwer.

    Fehlermeldung

    Nachricht . . . : KDSTAMM in QS36F für Operation ungültig.
    Ursache . . . . : Ursachencode ist 7. Ursachencodes:
    1 - KDSTAMM hat keine Teildateien.
    2 - KDSTAMM wurde mit freiem Speicherplatz gesichert.
    3 - KDSTAMM nicht im Journal aufgezeichnet, keine Berechtigung für Journal
    oder der Journalstatus ist *STANDBY. Dateien mit
    RI-Integritätsbedingungsaktion CASCADE, SET NULL od. SET DEFAULT müssen im
    selben Journal aufgezeichnet werden.
    4 und 5 - KDSTAMM in Prod.bibl. gespeichert/erstellt, aber Benutzer in
    Debug-Modus UPDPROD(*NO).
    6 - Schema wird erstellt, aber Benutzer in Debug-Modus UPDPROD(*NO).
    7 - Basistabelle zum Erstellen der Sicht ungültig. Tabelle ist
    programmbeschrieben oder befindet sich in einem temporären Schema.

    create view xxxx/auswahl as
    select
    b.rechnu , a.rechnr,
    date(
    case when substr(digits(a.datum), 5, 6) < '70' then '20' else '19'
    end concat substr(digits(a.datum), 5, 2) concat '-'
    concat substr(digits(a.datum), 3, 2) concat '-'
    concat substr(digits(a.datum), 1, 2)) as recdat,
    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 31, 9)) <> ' '
    then
    ltrim(substr(z.f00002 , 31, 9))
    else
    '123456789'
    end
    else
    case when ltrim(substr(y.anschri2, 1, 8)) <> ' '
    then
    ltrim(substr(y.anschri2, 1, 8))
    else
    '123456789'
    end
    end as POSTL,
    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 40, 20)) <> ' '
    then
    ltrim(substr(z.f00002 , 40, 20))
    else
    '*UNDEF'
    end
    else
    CASE when ltrim(substr(y.anschri2, 9, 26)) <> ' '
    then
    ltrim(substr(y.anschri2, 9, 26))
    else
    '*UNDEF'
    end
    end as ORTNA,

    case when Anskunde = 'X'
    then
    case when ltrim(substr(z.f00002 , 5, 26)) <> ' '
    then
    ltrim(substr(z.f00002 , 5, 26))
    else
    '*UNDEF'
    end
    else
    case when ltrim(substr(x.anschri2, 1, 35))<> ' '
    then
    ltrim(substr(x.anschri2, 1, 35))
    else
    '*UNDEF'
    end
    end as NAMEN,
    a.kundennr as kunden , a.kdeinr,(ENDBETRAG-zahlung) as restbetrag,


    date(
    case when (digits(faelligtt)) concat (digits(faelligmm)) <>
    '3002'
    then
    case when (digits(faelligjj)) < '70' then '20' else '19' end
    concat (digits(Faelligjj)) concat '-'
    concat (digits(faelligmm)) concat '-'
    concat (digits(faelligtt))
    else
    case when (digits(faelligjj)) < '70' then '20' else '19' end
    concat (digits(Faelligjj)) concat '-'
    concat '03-01'
    end
    ) as faedat

    from qs36f/debisudl as a
    left outer join qs36f/KDSTAMM as Z on kundennr = z.k00001
    left outer join qs36f/debisudt as Y on a.rechnr = y.rechnr
    and y.umerkmal = '3'
    left outer join qs36f/debisudt as x on a.rechnr = x.rechnr
    and x.umerkmal = '1'
    left outer join xxx/debivodtu as b on a.rechnr = b.rechnr

    KDSTAMM Programm BESCHRIEBEN

    DSPFD-Befehlseingabe
    Datei . . . . . . . . . . . . . . . . . . . : FILE KDSTAMM
    Bibliothek . . . . . . . . . . . . . . . : QS36F
    Art der Information . . . . . . . . . . . . : TYPE *ALL
    Dateiattribute . . . . . . . . . . . . . . : FILEATR *ALL
    System . . . . . . . . . . . . . . . . . . : SYSTEM *LCL
    Kopfzeile der Dateibeschreibung
    Datei . . . . . . . . . . . . . . . . . . . : FILE KDSTAMM
    Bibliothek . . . . . . . . . . . . . . . . : QS36F
    Dateiart . . . . . . . . . . . . . . . . . : Physisch
    Dateiart . . . . . . . . . . . . . . . . . : FILETYPE *DATA
    Zusatzspeicherpool-ID . . . . . . . . . . . : 00001
    Datenbankdateiattribute
    Extern beschriebene Datei . . . . . . . . . : Nein
    Dateiebenen-ID . . . . . . . . . . . . . . : 0921203095800
    Erstellungsdatum . . . . . . . . . . . . . : 03.12.92
    Text 'Beschreibung' . . . . . . . . . . . . : TEXT
    Verteilte Datei . . . . . . . . . . . . . . : Nein
    Partitionierte SQL-Tabelle . . . . . . . . : Nein
    DBCS-fähig . . . . . . . . . . . . . . . . : Nein
    Maximale Anzahl Teildateien . . . . . . . . : MAXMBRS *NOMAX
    Anzahl der Integritätsbedingungen . . . . . : 0
    Anzahl der Auslöser . . . . . . . . . . . . : 0
    Anzahl der Teildateien . . . . . . . . . . : 1
    Wartung des Zugriffspfads . . . . . . . . . : MAINT *IMMED
    Wiederanlauf des Zugriffspfads . . . . . . : RECOVER *NO
    Erzwungener Zugriffspfad . . . . . . . . . : FRCACCPTH *NO
    Größe der Teildatei SIZE
    Ursprüngliche Anzahl Datensätze . . . . . : 100000
    Satzanzahl für Erweiterung . . . . . . . : 32767
    Maximale Anzahl Erweiterungen . . . . . . : 508
    Datensatzkapazität . . . . . . . . . . . . : 16745636
    Speicher zuordnen . . . . . . . . . . . . . : ALLOCATE *NO
    Zusammenhängender Speicherplatz . . . . . . : CONTIG *NO
    Bevorzugte Speichereinheit . . . . . . . . : UNIT *ANY
    Sätze für erzwungenes Schreiben . . . . . . : FRCRATIO *NONE
    Maximale Dateiwartezeit . . . . . . . . . . : WAITFILE *CLS
    Maximale Satzwartezeit . . . . . . . . . . : WAITRCD *NOMAX
    Max % gelöschter Sätze zulässig . . . . . . : DLTPCT *NONE
    Gelöschte Sätze wiederverwenden . . . . . . : REUSEDLT *NO
    ID des codierten Zeichensatzes . . . . . . : CCSID 65535
    Lesen zulässig . . . . . . . . . . . . . . : Ja
    Schreiben zulässig . . . . . . . . . . . . : Ja
    Fortschreiben zulässig . . . . . . . . . . : ALWUPD *YES
    Löschen zulässig . . . . . . . . . . . . . : ALWDLT *YES
    Satzformat-Aktualitätsprüfung . . . . . . . : LVLCHK *NO
    Zugriffspfad . . . . . . . . . . . . . . . : Geschlüsselt
    Größe des Zugriffspfads . . . . . . . . . . : ACCPTHSIZ *MAX4GB
    Maximale Schlüssellänge . . . . . . . . . . : 5
    Maximale Satzlänge . . . . . . . . . . . . : 800
    Flüchtig . . . . . . . . . . . . . . . . . : Nein
    Datei wird derzeit aufgezeichnet . . . . . : Nein
    Zugriffspfadbeschreibung
    Wartung des Zugriffspfads . . . . . . . . . : MAINT *IMMED
    Eindeutige Schlüsselwerte erforderlich . . : UNIQUE Ja
    Zugriffspad aufgezeichnet . . . . . . . . . : Nein
    Zugriffspfad . . . . . . . . . . . . . . . : Geschlüsselt
    Integritätsart . . . . . . . . . . . . . . : NONE
    Anzahl der Schlüsselfelder . . . . . . . . : 1
    Satzformat . . . . . . . . . . . . . . . . : R.KDSTRE
    Schlüsselfelder . . . . . . . . . . . . . : K00001
    Reihenfolge . . . . . . . . . . . . . . : Aufsteigend
    Vorzeichen angegeben . . . . . . . . . : UNSIGNED
    Zone/Ziffer angegeben . . . . . . . . . : *NONE
    Alternative Sortierfolge . . . . . . . : Nein
    Sortierfolge . . . . . . . . . . . . . . . : SRTSEQ *HEX
    Sprachen-ID . . . . . . . . . . . . . . . . : LANGID DEU
    Teildateibeschreibung
    Teildatei . . . . . . . . . . . . . . . . . : MBR M921203
    Teildateiebenen-ID . . . . . . . . . . . : 0921203095801
    Erstellungsdatum der Teildatei . . . . . : 03.12.92
    Text 'Beschreibung' . . . . . . . . . . . : TEXT
    Verfallsdatum der Teildatei . . . . . . . : EXPDATE *NONE
    Wartung des Zugriffspfads . . . . . . . . : MAINT *IMMED
    Wiederherstellung des Zugriffspfads . . . : RECOVER *NO
    Größe der Teildatei SIZE
    Anfangsanzahl der Sätze . . . . . . . . : 100000
    Satzanzahl für Erweiterung . . . . . . : 32767
    Maximale Anzahl Erweiterungen . . . . . : 508
    Aktuelle Anzahl Erweiterungen . . . . . . : 0
    Satzkapazität . . . . . . . . . . . . . . : 16745636
    Aktuelle Anzahl Sätze . . . . . . . . . . : 4897
    Anzahl gelöschter Sätze . . . . . . . . . : 0
    Speicher zuordnen . . . . . . . . . . . . : ALLOCATE *NO
    Zusammenhängender Speicher . . . . . . . : CONTIG *NO
    Bevorzugte Speichereinheit . . . . . . . : UNIT *ANY
    Sätze für erzwungenes Schreiben . . . . . : FRCRATIO *NONE
    Offenen Datenpfad gemeinsam benutzen . . : SHARE *NO
    Max % gelöschte Sätze zulässig . . . . . : DLTPCT *NONE
    Anzahl der Teildateizugriffe . . . . . . : 0
    Aktivitätsstatistik für Datenbereich . . :
    Datenbereichsgröße in Byte . . . . . . : 3944448
    Zugriffe zum Öffnen der phys. Datei . . : 4.303
    Zugriffe zum Schließen der phys. Datei : 4.121
    Zugriffspfad gültig . . . . . . . . . . : Ja
    Impl. gemeinsame Ben. des Zugriffspfads : Nein
    Satzformatliste
    Satz- Fmt.Ebenen-
    Format Felder Länge ID
    R.KDSTRE 3 800 26304ABE995DF
    Text . . . . . . . . . . . . . . . . . . . :
    Gesamtanzahl Formate . . . . . . . . . . . . : 1
    Gesamtanzahl Felder . . . . . . . . . . . . : 3
    Gesamtlänge Datensatz . . . . . . . . . . . : 800
    Teildateiliste
    Quell. Erstell. Letzte Änderung Gelöschte
    Teildatei Größe Art Datum Datum Uhrzeit Sätze Sätze
    M921203 4071424 03.12.92 18.06.08 11:04:50 4897 0
    Text:
    Gesamtzahl an Teildateien . . . . . . . . : 1
    Gesamtzahl nicht verfügbarer Teildateien . : 0

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das liegt am Filesystem QS36F
    mit 36er Altlasten habe ich mich (zum Glück) schon ewig nicht mehr beschäftigt...
    dann bleibt aus meiner Sicht eigentlich nur noch ein Zugriffsmodul (sprich: ein ILE SRVPGM mit exportierten Procedures setWhereClause, setOrderBy ung getRecord...), damit man dieses ganze SLQ Gefiesel wenigstens nicht redundant in der Applikation hat.

    mein Beileid...

    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/

  6. #6
    Registriert seit
    Nov 2007
    Beiträge
    371
    Vielen Dank fürs Beileid aber das hilft mir auch nicht weiter .
    Toller Witz Serviceprogramme. In meiner alten Arbeiten hatten wir sowas aber hier
    ist Gruppenstufenanzeiger usw das Mittel aller Dinge. Datums werden z.B auf 30.2 gesetzt (das sind wirklich Brecher, da kann man eigentlich nur noch drüber lachen obwohl es zum weinen ist) und jetzt soll ich mit Serviceprogrammen anfangen.
    Da werde ich gesteinigt!!!!!!
    Ich brauche bald einen Seelenklemptner .

    Hoffe noch auf Hilfe oder einen anderer guten Rat.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    kann man das nicht vom Kopf auf die Füße stellen und damit anfangen die vorhandenen Satzaufbauten in DDS erstellten Dateien nachbilden und diese Dateien dann mit den unveränderten, vorhandenen Schinken verarbeiten?
    Extern beschriebene Dateien darf man ja schließlich auch intern beschreiben, es muss nur passen. Das ist zwar nicht ganz ohne Nebenwirkungen (wenn zum Beispiel unterschiedliche Beschreibungen verwendet werden, aber irgendwie muss man ja mal auf trockeneres Terrain kommen.

    D*B

    PS: nur so eine Idee eines seit > 10 Jahren Altlasten freien Programmierers
    Zitat Zitat von woodstock99 Beitrag anzeigen
    Vielen Dank fürs Beileid aber das hilft mir auch nicht weiter .
    Toller Witz Serviceprogramme. In meiner alten Arbeiten hatten wir sowas aber hier
    ist Gruppenstufenanzeiger usw das Mittel aller Dinge. Datums werden z.B auf 30.2 gesetzt (das sind wirklich Brecher, da kann man eigentlich nur noch drüber lachen obwohl es zum weinen ist) und jetzt soll ich mit Serviceprogrammen anfangen.
    Da werde ich gesteinigt!!!!!!
    Ich brauche bald einen Seelenklemptner .

    Hoffe noch auf Hilfe oder einen anderer guten Rat.
    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
    Nov 2007
    Beiträge
    371
    Das ist nicht so leicht. Die Datei wird noch in DFU Programmen verwendet.
    In OCL36 gibt es noch COPYDATA, weiß nicht ob es hier dann nicht kracht .
    Beneide jeden der mit so einer (Entschuldigung) scheiße nichts zu tun hat!!

  9. #9
    Registriert seit
    Jul 2002
    Beiträge
    218
    Zitat Zitat von woodstock99 Beitrag anzeigen
    Das ist nicht so leicht. Die Datei wird noch in DFU Programmen verwendet.
    In OCL36 gibt es noch COPYDATA, weiß nicht ob es hier dann nicht kracht .
    Beneide jeden der mit so einer (Entschuldigung) scheiße nichts zu tun hat!!
    habe ich auch jahrelang mit zu tun gehabt, steigert das Unwohlsein ungemein

    Aber alles was die gute alte S36 konnte, kann man nativ umsetzen.
    copydata-> cpyfile
    und dfu würde ich ganz ´rausnehmen und eine Anwendung ´drausmachen.
    Letztens habe ich noch eine 36iger Datei durch DDS-beschriebene Datei ersetzt, sogar der bldindex tat es danach noch. ist halt nur viel Fleißarbeit.

    lg
    Hans-Joachim

Similar Threads

  1. problem mit eigener sql function
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 26-05-06, 16:37
  2. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 15:57
  3. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  4. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38
  5. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

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