[NEWSboard IBMi Forum]

Thema: SQL VIEW

  1. #1
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005

    SQL VIEW

    Hallo,

    hab mal 'ne ganz blöde Frage bzgl. Views in SQL. Bisher hatte ich sämtliche Dateidefinitionen per DDS erledigt und bin deshalb noch nicht so fit in SQL-DDL.
    Wie kann ich denn einem SQL-VIEW Key-Felder zuweisen? Laut Handbuch fand ich da keine Möglichkeit. Dann wollte ich einen Index drüber legen. Das ist jedoch für Views nicht erlaubt.
    Da ich diese View per DDM von einem anderen System aus verarbeiten muß, muß ich die View satzweise (Record-Level-Access) verarbeiten, weil SQL-Anweisungen per DDM nicht funktionieren. Wenn ich nun z.B. einen SETLL auf die View mache, kommt natürlich ein Fehler, weil diese View keine Schlüsselfelder hat.
    Kann mir da jemand einen Tip geben?

    Danke,
    KM

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.893
    Zitat Zitat von KM
    Wie kann ich denn einem SQL-VIEW Key-Felder zuweisen? Laut Handbuch fand ich da keine Möglichkeit. Dann wollte ich einen Index drüber legen. Das ist jedoch für Views nicht erlaubt.
    Da ich diese View per DDM von einem anderen System aus verarbeiten muß, muß ich die View satzweise (Record-Level-Access) verarbeiten, weil SQL-Anweisungen per DDM nicht funktionieren. Wenn ich nun z.B. einen SETLL auf die View mache, kommt natürlich ein Fehler, weil diese View keine Schlüsselfelder hat.
    Kann mir da jemand einen Tip geben?
    Danke,
    KM
    Kurze Antwort:
    Bis Dato können Views nicht geschlüsselt werden!

    Mit Native I/O hast Du keine Möglichkeit auf die Reihenfolge der Datensätze Einfluß zu nehmen.

    Warum DDM?
    Über einen CONNECT müsstest Du mittels SQL auf die Ferne Datenbank zugreifen können bzw. von dem Fernen System auf das Lokale.

    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.375
    Ganz so einfach mit dem Connect ist es leider nicht.
    Embedded SQL erstellt ein SQLPKG im Programm, dass per CRTSQLPKG erst auf das Zielsystem geschoben werden muss.
    Allerdings ist die Verarbeitung dann auch erheblich einfacher, da nur die relevanten Daten übertragen werden.

    Eine VIEW ist halt nur eine bestimmte Sicht und nicht mit einer LF vergleichbar, eher wie eine Join-LF mit 1 oder mehr Dateien ohne Schlüssel.
    Für die Zugriffsoptimierung kann man dann Indexe anlegen, die für die Join's und Order-By's verwendet werden.

    PS:
    Seit wann funktioniert denn SETLL auf einer DDMF ?
    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

  4. #4
    Registriert seit
    Dec 2002
    Beiträge
    301
    Wenn im Parameter 'RMTFILE' der DDM-Datei eine logische Datei angegeben wird, dann kann man auch den SETLL anwenden. Habe ich auch schon mehrfach so gemacht.

  5. #5
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Erstmal danke für die bisherigen Antworten. Nur hilft mir das bei meinem Problem leider nicht viel weiter. Ich habe jetzt mal folgendes getestet:

    1) Wenn ich eine View über eine Datei erstelle und führe einen CAST von CHARACTER CCSID(1153) nach GRAPHIC CCSID(13488) durch, dann werden die Zeichen zwar korrekt umgesetzt. Allerdings erhalte ich nach jedem Wort, das Sonderzeichen enthält, jede Menge Schrott, wenn ich diese Daten per PHP-ODBC-Zugriff im Browser anzeigen lasse. Evtl. könnte das am Linux-ODBC-Treiber liegen. Wenn ich diese Daten nämlich in Excel importiere, sehen sie korrekt aus.

    2) Ein CAST von CHARACTER CCSID(1153) nach CHARACTER CCSID(1208) ist leider noch problematischer, da hier viele Daten einfach nicht umgesetzt werden können.

    3) Das mit dem SQL-CONNECT funktioniert leider auch nicht. Ich erhalte seltsamerweise immer folgenden Fehler:

    SQL0900 - Application process not in a connected state, SQL state S1000 in SQLExecDirect in /srv/www/dt/typo3conf/ext/fk_test/pi1/class.tx_fktest_pi1.php on line 74

    obwohl ich ein entsprechendes SQL-Package erstellt habe. Die Stored Procedure, die ich aus PHP aufrufe, müsste eigentlich auch korrekt erstellt worden sein.

    4) So wie es aussieht muß ich wohl doch bei meiner ursprünglichen Variante (DDM-Files) bleiben, da mir das Ganze mit SQL dann doch viel zu wackelig ist. Es ist nur zu blöd, dass ich diese DDM-Files nicht satzweise verarbeiten kann, wenn es sich dabei um Views handelt. Aber anscheinend klappt das mit dem CAST ja eh nicht. Also muß ich wohl doch sämtliche Textfelder immer mit iconv() in die entsprechende CCSID konvertieren (hier 1208, um im Browser korrekt dargestellt zu werden). Das klappt zumindest. Es kostet halt ein wenig Performance.

    Gruß,
    KM

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  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
  •