Problem mit UPDATE-Anweisung in der gespeicherten Prozedur in Oracle-Datenbank

Habe ich gespeichert-Prozedur in einer Oracle-Datenbank wie diese:

create or replace
PROCEDURE EDYTUJ_PRACOWNIKA
  (PR_IMIE IN VARCHAR2, PR_NAZWISKO IN VARCHAR2, PR_PENSJA IN FLOAT,
  PR_PRZELOZONY IN NUMBER, PR_ODDZIAL IN NUMBER, PRAC_ID IN NUMBER)
AS
tmpPensja FLOAT := 0;
tmpPrzel NUMBER := 0;
BEGIN
  select przelozony into tmpPrzel from pracownik where id = PRAC_ID;
  IF(tmpPrzel IS NOT NULL) THEN
    select pensja into tmpPensja from pracownik where id = tmpPrzel;
    IF(tmpPensja < 1150) THEN
      UPDATE PRACOWNIK SET pensja = 1000 WHERE id = tmpPrzel;
    ELSE
      UPDATE PRACOWNIK SET pensja = pensja - 150 WHERE id = tmpPrzel; (4)
    END IF;
  END IF;

  IF(PR_PRZELOZONY > 0) THEN 
    UPDATE PRACOWNIK SET imie = PR_IMIE, nazwisko = PR_NAZWISKO, pensja = PR_PENSJA, przelozony = PR_PRZELOZONY,
      oddzial = PR_ODDZIAL WHERE id = PRAC_ID; (2)
    select pensja into tmpPensja from pracownik where id = PR_PRZELOZONY;

    IF(tmpPensja > 4850) THEN
      UPDATE PRACOWNIK SET pensja = 5000 WHERE id = PR_PRZELOZONY;
    ELSE
      UPDATE PRACOWNIK SET pensja = pensja + 150 WHERE id = PR_PRZELOZONY; (1)
    END IF;
  ELSE
    UPDATE PRACOWNIK SET imie = PR_IMIE, nazwisko = PR_NAZWISKO, pensja = PR_PENSJA, przelozony = NULL,
      oddzial = PR_ODDZIAL WHERE ID = PRAC_ID; (3)
  END IF;
END;

wo przelozony und pensja sind Spalten in pracownik Tabelle.

Und ich habe ein problem, dass bei der Ausführung Prozedur mit Parametern, die vorsehen, dass die Linie, markiert mit "(1)" (es ist das gleiche problem mit der Zeile, gekennzeichnet mit "(4)") ausgeführt werden soll, dass der update-Anweisung haben keine Wirkung. Was mehr Anweisungen in den Zeilen, markiert mit "(2)" und "(3)" funktioniert einwandfrei.

Habe ich keine Ideen wie man es beheben. Vielen Dank im Voraus für Eure Hilfe.

InformationsquelleAutor MKP | 2010-05-20
Schreibe einen Kommentar