[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    68

    Finde Fehler bei SQL nich...

    Hallo!

    Hier mal wieder ein neues Problem:

    Ich lerne grad SQL und wollt mir eine Beispieltabelle anlegen. 4Spalten inkl. Datumsfeld. Nach dem CREATE Table will ich gleich n INSERT INTO machen und laufe da auf folgenden Fehler:


    SQL7905 20 1 Position 1 Tabelle TEST21QL in GEISLER erstellt, Tabelle konnte jedoch nicht im Journal aufgezeichnet werden.

    SQL0104 30 11 Position 59 Token , ungültig. Gültige Token: <ENDE DER ANWEISUNG>.
    SQL7961 0 ROLLBACK beendet.

    Die genannte Fehlerhafte Zeile ist unten...was läuft bei dem Datumsfeld falsch?
    Definiert ist es folgendermaßen:
    DATUM DATE NOT NULL WITH DEFAULT '0001-01-01');


    0011.00 VALUES ('KATZE', 1, 2, 'SCHWARZ UND BUNT','20051205'),

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Datum muss im ISO-Format übergeben werden:

    VALUES ('KATZE', 1, 2, 'SCHWARZ UND BUNT','2005-12-05')

    Das Komma am Ende muss weg, da mit Klammer-Zu das Statement beendet ist.
    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
    Jan 2006
    Beiträge
    68
    Mit den verschiedenen Datenformaten hab ich etwas rumgespielt aber hatte nie was gebracht.

    Das Komma hinter der Klamma steht da, weil ich gleich mehrere Values hinzufügen will und da stand im handbuch, man solle es per ',' trennen...im Ganzen sieht das also so aus

    INSERT INTO GEISLER.TEST2SQL
    (NAME, EINTRAGSNR, ANZAHL, BEMERKUNG, DATUM)
    VALUES ('KATZE', 1, 2, 'SCHWARZ UND BUNT','2005-12-05')
    ('PFERD', 6, 1, 'GROSS UND BREIT','07.12.2005')
    ('HUND', 2, 4, 'ANGST','2006-07-10')
    ('MAUS', 5, 2, 'GRAU UND BRAUN', '2006-08-08')
    ('VOGEL', 3, 1,' DOOF', '2006-08-07')
    ('BAER', 4, 5, 'LIEB UND SUESS', '2006-08-15');


    Lasse ich nun die kommas weg, dann krieg ich nen neuen Fehler; mache ich es mit Komma, kommt der "alte"Fehler

    SQL0104 30 11 Position 61 Token , ungültig. Gültige Token: <ENDE DER
    ANWEISUNG>.
    SQL7961 0 ROLLBACK beendet.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Mehrere Zeilen mit einem Insert funktioniert interaktiv nicht bzw. wird nicht unterstützt.

    Also: Pro Satz ein eigener Insert !
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau
    Mehrere Zeilen mit einem Insert funktioniert interaktiv nicht bzw. wird nicht unterstützt.
    Wie kommst Du schon wieder auf dieses schmale Brett?
    Auch interaktiv können ab Release V5R3M0 mehrere Zeilen auf einmal eingefügt werden. (Auch ohne Sub-Select!)

    Das folgende Beispiel funktioniert unter V5R3M0:
    PHP-Code:
    CREATE TABLE MySchema.TEST 
         
    (NAME CHAR (10 NOT NULL WITH DEFAULT, 
          
    ZAHL INTEGER NOT NULL WITH DEFAULT, 
          
    DATUM DATE NOT NULL WITH DEFAULT);           

    insert into MySchema.Test 
          
    (NameZahlDatum)
    Values('Meier'123'2006-08-01'),
          (
    'Schulze'45678'10.08.2006'); 
    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich habe immer noch Kunden, die mit V5R1 oder sogar V4R5 und V4R3 arbeiten.
    Wo ist der kleinste gemeinsame Nenner ?

    Man könnte auch immer gleich mit "In V5R4 gehts doch auch" und "mit V5R5 kommts auf jeden Fall" antworten, aber helfen tut's nicht.

    Da bewege ich mich (meistens) doch lieber auf der sicheren Seite

    PS:
    Da das Komma als fehlerhaft abgewiesen wurde, liegt zumindestens NICHT V5R3 vor.
    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

  7. #7
    Registriert seit
    Jan 2006
    Beiträge
    68
    Also ich wollte keinen Streit provozieren...ich bin über jede Hilfe dankbar.

    So...um diesmal auszuschließen, das es an mir liegt, hab ich die Commands nur kopiert-->

    1
    2 CREATE TABLE GEISLER.TESTSQL
    3 (NAME CHAR (10 ) NOT NULL WITH DEFAULT,
    4 ZAHL INTEGER NOT NULL WITH DEFAULT,
    5 DATUM DATE NOT NULL WITH DEFAULT);
    6
    7 INSERT INTO MYSCHEMA.TEST
    8 (NAME, ZAHL, DATUM)
    9 VALUES('MEIER', 123, '2006-08-01'),
    10 ('SCHULZE', 45678, '10.08.2006');

    und wollte dann mit RS die Sache wandeln: WIEDER triff folgender Fehler auf:
    SQL0104 30 9 Position 35 Token , ungültig. Gültige Token: <ENDE DER
    ANWEISUNG>.

    Das triffe mal wieder genau die Datumsangabe:
    Habe es ausprobiert mit '2006-08-01' und mit '2006.08.01' - der Fehler bleibt aber gleich

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Also hast du noch kein V5R3 !!!!
    Und damit kannst du in einem Insert nur 1 Zeile einfügen.

    Der Fehler weist doch darauf hin, dass in Zeile 9, Stelle 35 das Komma nicht erwartet wird sondern das "Ende der Anweisung" !
    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

  9. #9
    Registriert seit
    Jan 2006
    Beiträge
    68
    Hm, wenn du meist (bin zwar eigentlich ziemlich davon übrezeugt aber du kennst dich besser aus).

    Ich hab die VALUES jetzt also getrennt.

    1
    2 CREATE TABLE GEISLER.TESTSQL
    3 (NAME CHAR (10 ) NOT NULL WITH DEFAULT,
    4 ZAHL INTEGER NOT NULL WITH DEFAULT,
    5 DATUM DATE NOT NULL WITH DEFAULT);
    6
    7 INSERT INTO GEISLER.TESTSQL
    8 (NAME, ZAHL, DATUM)
    9 VALUES('MEIER', 123, '2006.08.01'),
    10 VALUES('MUELL', 587, '10.08.2006');


    Es entsteht folgender Fehler:
    SQL0104 30 9 Position 35 Token , ungültig. Gültige Token: <ENDE DER
    ANWEISUNG>.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Probier doch dieses aus:

    1
    2 CREATE TABLE GEISLER.TESTSQL
    3 (NAME CHAR (10 ) NOT NULL WITH DEFAULT,
    4 ZAHL INTEGER NOT NULL WITH DEFAULT,
    5 DATUM DATE NOT NULL WITH DEFAULT);
    6
    7 INSERT INTO GEISLER.TESTSQL
    8 (NAME, ZAHL, DATUM)
    9 VALUES('MEIER', 123, '2006-08-01');

    7 INSERT INTO GEISLER.TESTSQL
    8 (NAME, ZAHL, DATUM)
    10 VALUES('MUELL', 587, '2006-08-10');

    Wenn ich mich nicht verzählt habe (laut deiner Quelle) ist Stelle 35 genau das Komma nach der Klammer-Zu !
    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

  11. #11
    Registriert seit
    Jan 2006
    Beiträge
    68
    Jajaja...hab an der falschen Skala gezählt und den Kommentar gleich wieder rausgenommen aber hast mich doch erwischt.
    Nun zu dem Problem: Folgender Quelltext steht jetzt also da-nur von dir kopiert:

    1
    2 CREATE TABLE GEISLER.TESTSQL
    3 (NAME CHAR (10 ) NOT NULL WITH DEFAULT,
    4 ZAHL INTEGER NOT NULL WITH DEFAULT,
    5 DATUM DATE NOT NULL WITH DEFAULT);
    6
    7 INSERT INTO GEISLER.TESTSQL
    8 (NAME, ZAHL, DATUM)
    9 VALUES('MEIER', 123, '2006-08-01');
    10
    11 INSERT INTO GEISLER.TESTSQL
    12 (NAME, ZAHL, DATUM)
    13 VALUES('MUELL', 587, '2006-08-10');


    Ergibt folgende Meldungen:
    SQL7905 20 1 Position 1 Tabelle TESTSQL in GEISLER erstellt, Tabelle
    konnte jedoch nicht im Journal aufgezeichnet werden.
    SQL7008 30 7 Position 3 TESTSQL in GEISLER für Operation ungültig.
    SQL7961 0 ROLLBACK beendet.

    Ist das eigentlich schlimm mit dem Journal?

    Wenn ich bei dem INSERT INTO statt dem qualfizierten Namen den einfachen Namen, sprich
    7 INSERT INTO TESTSQL nehme, dann kommt diese Meldung:

    SQL0204 30 7 Position 3 TESTSQL der Art *FILE in AZOPER nicht
    gefunden.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da du RUNSQLSTM verwendest musst du den Commit-Modus angeben.
    Deine Lib enthält kein Journal, daher die Fehlermeldung.
    Dies kann ignoriert werden wenn du beim Commit *NONE angibst.
    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

Similar Threads

  1. SQL Substring (Fehler 42703)
    By olbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 28-12-06, 13:53
  2. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 13:41
  3. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL Fehler mit Notes Connector
    By Timmo in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 06-05-02, 08:48

Berechtigungen

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