Announcement

Collapse
No announcement yet.

SQl-Skript wird erfolgreich ausgeführt, aber keine Änderungen in der Tabelle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQl-Skript wird erfolgreich ausgeführt, aber keine Änderungen in der Tabelle

    Hallo Gurus dieses Forums,

    eine Frage habe ich an Euch,
    ich führe in IBExpert ein .sql-Skript (Firebird 2.5) aus, das funktioniert ohne Fehler, aber werden keine Änderungen in der Tabelle durchgeführt. Das Skript soll nach einem aktuellen bzw. letzen Datum suchen und andere Werte dieser Tabelle (wo das Datum 0 max ist) ändern. Das wird ausgeführt ohne Fehler, aber in den Spalten, da das aktuelle Datum gefunden wurde, passiert nichs, keine Änderungen. Alle Werte bleiben unverändert. (ich arbeite in diesem Fall nicht direkt mit den Tabellen, sondern mit Views)

    Woran das liegen kann? Ich bitte um Eure Hilfe. Für jeden Tip bin ich dankbar!

    ...
    CREATE OR ALTER PROCEDURE REPORT_CURRENT_LATEST
    as
    declare variable stand date;
    declare variable standberichtnew date;
    declare variable lastbericht date;
    declare variable ergebnisbericht integer;
    declare variable berichtsid integer;
    declare variable alteberichtsid integer;
    declare variable id integer;
    declare variable berichtszahl integer;
    declare variable naechstesdatum date;
    declare variable safetytest date;

    BEGIN
    FOR SELECT

    test,id, safety_test from view1 into :stand,:id,:safetytest
    do begin

    IF (stand is not null) THEN
    BEGIN

    select max (test_date) from view2 where id = :id into :lastbericht ;

    select count (report_id) from view2 where id = :id and test_date = :lastbericht into :berichtszahl ;

    END


    if (berichtszahl > 1 ) then


    BEGIN


    select report_id,f_next_test_date from view2 where id = :id and test_date = :lastbericht and final_rslt = 0 into :berichtsid, :naechstesdatum;
    if (berichtsid is not null) then
    BEGIN
    UPDATE view1 SET
    view1.curr_report_id = :berichtsid,
    view1.f_last_standard_test = :lastbericht ,
    view1.last_safety_test = :lastbericht ,
    view1.test = :naechstesdatum,
    view1.safety_test = :naechstesdatum
    where view1.id = :id;

    END

    Danke im Voraus.

    LG
    Lessy

  • #2
    Vielleicht einfach commit vergessen?

    Comment


    • #3
      Danke für die schnellen Antwort,

      nach dem Ausführen mache ich commit, das bringt aber nichts...

      Comment


      • #4
        Bei solchen Problemen ist eine Log Ausgabe immer hilfreich.
        Entweder ala "bin grad hier, nun bin ich im else teil " oder
        simple Ausgabe der returnierten, gesuchten, bzw. gefunden views.

        Standardmäßig kann Firebird das aber wohl nicht, gibt aber UDF Pakete, die das erlauben.
        z.B.
        https://www.ibphoenix.com/download/tools/udf (siehe External File UDF's für Windows)
        https://www.ibphoenix.com/files/extfileudf.zip

        Ansonsten musst Du die Views mal per se (also zu Fuß) prüfen, ob
        a) der View1 was ausspukt
        b) die Eintrittsbedingungen für Update erfüllt sind
        c) Dein Update zu Fuß mit einer konkreten ID aus a) etwas tut/ändert.

        In anderen System erlaubt ein Update, Insert oder Select oder delete auch die Abfrage der betroffenen Zeilen, nachdem es ausgeführt wurde.
        Gruß, defo

        Comment


        • #5
          Danke für die Hilfe defo,

          ich probiere alle Pünkte mal aus und melde mich später.

          LG
          Lessy

          Comment

          Working...
          X