-
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
-
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.
-
... 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
-
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
-
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.
-
Zitat von Fuerchau
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
-
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.
-
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.
-
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
-
... 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
Similar Threads
-
By dibe in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 11-11-16, 09:59
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 07-09-15, 08:29
-
By Joe in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-05-15, 07:20
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 25-12-14, 10:30
-
By KB in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 24-07-01, 15:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks