[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.074

    SQL CREATE or Replace View

    Hallo *all,

    ab welchem Release gibt es die Möglichkeit ein Create or replace View zu machen?

    Unter V6R1 bekomme ich definitiv eine Fehlermeldung.

    GG 4732

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Spielt das eine Rolle?
    Eine View lässt sich doch ebenso leicht per DROP/CREATE erstellen.
    Ein Create or Alter Table (á la CHGPF mit Source) würde da viel mehr Sinn machen. Aber der ist auch in V7R3 noch nicht vorgesehen.

    Ansonsten: laut Doku in V7R1.
    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
    Mar 2002
    Beiträge
    5.286
    ... der Haken beim DROP/CREATE ist, dass das in Scripten per RUNSQLSTM Probleme mit Error Handling gibt und Genlevel hochsetzen lässt dann auch andere Fehler durch.

    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/

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    1. Die CREATE OR REPLACE Erweiterungen sind erst mit Release 7.1 dazugekommen. In älteren Releasen kann man nur DROP und CREATE verwenden.

    2. @Baldur: CREATE OR REPLACE TABLE
    CREATE OR REPLACE TABLE gibt es bereits seit dem 1. TR für Release 7.2. Die Erweiterung wurde auch für Release 7.1 zur Verfügung gestellt. Im Falle einer Änderung muss lediglich das SQL-Skript bzw. das CREATE OR REPLACE TABLE Statement entsprechend angepasst und anschließend ausgeführt werden. Per Default werden keine Daten gelöscht, sondern bleiben vorhanden. Ebenso bleiben die abhängigen Objekte wie Views, Indices, Triggers, Constraints vorhanden.
    Wie das funktioniert, hab' ich überigens bereits im letzten Frühjahr auf der POW3R live gezeigt!
    Auch gibt es aktuell zu dem Thema CREATE OR REPLACE aktuell auch eine Artikel-Serie im TechKnowLetter.

    3. @Dieter: DROP und CREATE
    Führt man das Skript mit Client Access oder ACS Run SQL Skripts aus, kann man eine Option setzen, so dass das Skript bei DROP auf ein nicht vorhandenes Objekt nicht stehen bleibt, sondern weiter ausgeführt wird.
    Seit 7.1 gibt es auch das dynamische compound statement (BEGIN ... END), in dem man z.B. den DROP ausführen kann und für den Fehlerfall einen entsprechenden CONTINUE Handler integrieren kann, über den ein oder mehrere bestimmte Fehler abgefangen werden.
    Das dynamische Compound Statement kann auch in einem Skript das mit RUNSQLSTM ausgeführt wird, eingesetzt 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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Schön, dass die Erweiterungen immer nur in den TR's beschrieben werden, sich aber in den Handbüchern/Dokumenten aber eher selten wiederfinden lassen (in der PDF für V7R3 steht da jedenfalls noch nichts).
    Auf die TR-Dokus habe ich nun mal leider keinen Zugriff und meine Kunden sind auch eher nachlässig (oder übervorsichtig), was die Updates auf dem System angeht.
    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

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Schön, dass die Erweiterungen immer nur in den TR's beschrieben werden, sich aber in den Handbüchern/Dokumenten aber eher selten wiederfinden lassen (in der PDF für V7R3 steht da jedenfalls noch nichts).
    Auf die TR-Dokus habe ich nun mal leider keinen Zugriff und meine Kunden sind auch eher nachlässig (oder übervorsichtig), was die Updates auf dem System angeht.
    Was genau findest du nicht?
    Klar, wenn du eine Doku von der Zeit vor dem TR hast, wirst du es nicht finden.
    Ladest du dir das aktuelle PDF runter (das kann auch jeder nicht IBM Kunde) findest du in der SQL Referenz sogar die Updates vom März 2017. (Inkl. dem OR REPLACE)

    lg Andreas

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Danke für den Hinweis, ich werde das beherzigen.
    Trotzdem stehe ich auf dem Schlauch, wenn die Kunden nicht mitspielen.
    Ein kleines Beispiel:

    Einfache Datumskonvertierung (klappte schon auf V6R1) von Dezimal JJJJMMTT, beide Systeme V7R1, allerdings unterschiedliche PTF-Stände/TR's (nicht geprüft)?

    date(char(nullif(MyDateNum, 0) * 1000000))

    Auf einem System klappt das ohne Probleme, auf dem 2. System kommt ein Überlauffehler.
    Im Debugmodus sieht man dann auch einen "Cast"-Fehler dieser Art (abgekürzt):

    cast(MyDateNum * 1000000 as integer)

    Nun weiß ich nicht, wie der Optimizer auf die Idee kommt, dass eine 8-Stellige * 6-Stellige Zahl in ein Integer passt.
    Nach Änderung in
    date(digits(nullif(MyDateNum, 0)) concat '000000')
    klappt es auf beiden Systemen.

    Das Hauptproblem des Ganzen ist einfach, dass man immer wieder überlegen muss, welcher SQL auf welchem Release und dann auch noch mit welchem TR funktioniert.
    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

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Bei diesem konkreten Fall kann ich wenig dazu sagen. Oft spielen ja auch noch andere Faktoren zusammen.
    Zu guter letzt kann es ja durchaus auch ein Bug sein der mit ensprechenden PTF behoben oder auch erzeugt wurde.
    Ich hab auch schon einige Bugs gefunden, gemeldet und mittels PTF gefixed bekommen.

    Klar, wir hatten ja schon das Phänomen, dass mit einem neuen Release Fehler, die zuvor vom System noch "Tolleriert" wurden, plötzlich eine Exception werfen.
    In wieweit Fehler tolleriert werden sollen, ist glaub ich eher eine Glaubensfrage.
    Aber in diesem Fall fand ich es gut (vor allem da ich selbst nicht davon betroffen war ;-) ) da mir lieber ist, wenn eine Exception dort auftritt wo der Fehler auch wirklich passiert und nicht erst irgendwo in der Applikation wo man eventuell nicht sofort drauf kommt wo das Problem ist.

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    ich weiß nicht wo Du nachschaust, aber die Website, die Referenzen und sonstige Handbücher werden eigentlich immer mit oder kurz nach dem TR Announcement angepasst.
    Zumindest war das so mit den letzten paar Erweiterungen.

    CREATE OR REPLACE ist beschrieben! Aber man bekommt vielleicht nicht alles kleingekaut, man muss auch ein bißchen mitdenken und Schlussfolgerungen ziehen.
    Ich habe genauso viel oder wenig Zugriff auf die TR Beschreibungen wie andere auch, meine Quellen sind ausschließlich das Internet.

    Ansonsten kann man die Erweiterungen immer unter den Technologie Updates finden

    Eine Konvertierung eines numerischen Wertes mit CHAR wurde noch nie empfohlen, da CHAR führende Nullen entfernt und linksbündig ausrichtet und den Rest mit BLANKS auffüllt!
    Eine Multiplikation zur Konvertierung von numerischen Datums-Werten war ebenfalls noch nie empfohlen, da es hierbei zu Überläufen kommen kann!
    Desweiteren ist es nichts Neues, dass eine Zahl ohne Dezimal-Positionen mutliplizert mit einer anderen Zahl in Dezimal-Positionen ein Ganzzahliges Ergebnis liefert. Ob das Ergebnis dann als Integer oder BigInteger ausgegeben wird hängt dann von den tatsächlichen Ergebnis ab, aber wie bereits bemerkt kann es hierbei zu Überlaufen kommen.
    Die Empfehlung war schon immer die Konvertierung mit DIGITS zu manchen und dann einen String bestehend aus 6 Nullen dazuzuketten.

    DIGITS und CONCAT haben schon immer funktioniert unter allen Releasen und allen TRs.

    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

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... deshalb empfehle ich, das ganze TR Gedöns als "technical preview" zu sehen und in production nicht zu verwenden und stets abzuwarten bis es in einem Release enthalten ist. In vielen Fällen handelt es sich bei Neuereungen ohnehin um Schnickschnack, den man nicht verwenden sollte, wenn er nicht SQL Standard ist. In diese Ecke gehören fast alle UDTFs, die von IBM und einigen blaugestreiften Apologeten angeboten werden wie Sauerbier.
    Eine Bemerkung noch zur Prüflogik von numerischen Operationen: Hintergrund sind hier Änderungen in der Implementierung numerischer Operationen, weg von packed decimal arithmetic, die Overflow conditions oft erst zum Schluss erkannt hat.
    Hinterher ist es immer leicht zu sagen, hätte man das früher besser gemacht, hätte es heute nicht geknallt, der Compiler war halt zu lax. Keiner hält sich an alle Regeln, die der Compiler nicht prüft, aber prüfen könnte (siehe Variablennamen in embedded SQL). Was ich erwarten würde, wäre, dass man verschärfte Prüflogik beim Compile abschalten könnte (ähnlich TGTRLS).

    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. create or replace table
    By dibe in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 11-11-16, 10:59
  2. SQL Create view V5R4
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 07-09-15, 09:29
  3. Replace im CL
    By Joe in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-05-15, 08:20
  4. Create View Satzname
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-12-14, 11:30
  5. UNION/UNION ALL beim CREATE VIEW
    By KB in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 24-07-01, 16:43

Berechtigungen

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