[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2006
    Beiträge
    195

    SQL-View Ändern

    Hallo zusammen,

    Problem1:
    ich habe einen SQL-View
    create view myview(Feld1, Feld2) as
    Select (char('abc'), char(feld_x)) from Datei_x
    erstellt.
    Wenn ich jetzt mein View in einem belibigen ODBC-Query-Tool anschaue dann wird das Feld1 als CHAR FOR BIT DATA (JDBC-Typ Binary) und nicht als CHAR(JDBC-Typ Char) definiert.

    Problem 2:
    Kann bestehende VIEW geändert werden oder die Definition anzeigen (auf welche Datei erstellt wurde und und.....).


    eval user(*all) = 'besten Dank'

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn deine Datei_X die CCSID 65535 hat, passiert genau dieses. Die Daten sind als Binärdaten definiert.
    Bei CA-ODBC kannst du in der Konfiguration angeben, dass Binärdaten trotzdem umgesetzt werden.
    Im ConnectionString für JDBC gibt es auch eine entsprechende Option.

    Du kannst allerding sauch deine View so ändern, dass eine CCSID verwendet wird:

    create view myview(Feld1, Feld2) as
    Select (cast('abc' as char(3) ccsid 273), cast(char(feld_x) as char(nn) ccsid 273) from Datei_x

    Beachte aber, dass durhc das Casten beim späteren Select keine Indizes verwendet werden können und immer ein Table-Scan erforderlich wird.

    Besser wäre es, der Datei_x eine correkt CCSID zu verpassen und währende der Erstellung der View auch dem Job eine passende CCSID zu vergeben, z.B. "CHGJOB CCSID(273)".
    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
    May 2006
    Beiträge
    195
    Supper

    funktioniert.

    Danke

    P.S.: kann bestehende View geändert werden ?
    (zum Bsp. Feld hinzufügen oder die gesamte Definition ansehen)

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    dspfd oder dspffd zeigt die Definition
    (habe grade keine as400 laufen)

    Schreib den create view in eine TXT Datei

    z.B in QVIEWSRC
    dort kannst du den Befehl jederzeit anpassen und mit runsqlstm ausführen.
    ab dem 2. mal nimmst du in die Source ein "drop view" mit auf.

    kommentar in der SQL Source =
    -- Dies ist Kommentar


    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Aber Achtung:
    Wenn mehrere Befehle in einer Datei stehen, so ist jeder einzelne mit Semikolon abzuschließen:

    drop view ....;
    create view ....;
    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
    May 2006
    Beiträge
    195
    Danke

    funktioniert.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich habe mir da übrigens eine PDM-Auswahl geschaffen, da ich das häufiger brauche:

    RT ? RUNSQLSTM SRCFILE(&L/&F) SRCMBR(&N) COMMIT(*NONE)
    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 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ich habe mir da übrigens eine PDM-Auswahl geschaffen, da ich das häufiger brauche:

    RT ? RUNSQLSTM SRCFILE(&L/&F) SRCMBR(&N) COMMIT(*NONE)
    Ich habe meine Auswahl noch etwas erweitert:
    RUNSQLSTM SRCFILE(&L/&F) SRCMBR(&N) COMMIT(*NONE) NAMING(*SYS) DFTRDBCOL(&O)

    Mit DFTRDBCOL kann die Objektbibliothek vorgegeben werden. Damit ist es nicht erforderlich die zu erstellenden (oder bearbeitendend) Objekte zu qualifizieren (Angabe der Bibliothek ist nicht erforderlich). Über das gleiche Skript können Objekte in unterschiedlichen Bibliotheken erstellt werden.

    Mit Naming *SYS wird festgelegt, dass System Naming verwendet wird. Ist zwar der Default-Wert ich möchte jedoch sicherstellen, dass IMMER System Naming verwendet wird. Dies ist deshalb wichtig, damit die OS/400 bzw. IBM i Objektberechtigungen verwendet werden. Verwendet man SQL Naming gelten diese Regeln nicht. (vergl. Artikel: System versus SQL Naming - Part 1)

    Birgitta
    Birgitta Hauser

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

Similar Threads

  1. SQL CREATE VIEW komplexes Problem
    By bettina_martin in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 11-02-10, 14:56
  2. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  3. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  4. SQL VIEW
    By KM in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-01-06, 08:52
  5. SQL view
    By lieser in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-11-04, 04:11

Berechtigungen

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