Aktualizowanie tabeli w Oracle, jeśli jakakolwiek wartość pola ma wartość Null i ustalenie, że aktualizacja się powiodła
Może zajść potrzeba zaktualizowania poszczególnych pól tabeli lub wszystkich pól, jeśli ich wartości mają wartość NULL, w przeciwnym razie nie ma potrzeby aktualizowania żadnego pola. Poniżej znajduje się przykładowa procedura do tego samego celu napisana w tabeli HR.Employees:PROCEDURA UTWÓRZ LUB ZAMIEŃ HR.UpdateEmpIfNull ( PN_EMPLOYEE_ID W LICZBIE, PV_FIRST_NAME W VARCHAR2, PV_LAST_NAME W VARCHAR2, PV_EMAIL W VARCHAR2, W PVD PV_PHONE W NUMERZE VARCHAR2, PN_SALARY IN NUMBER, PV_Success OUT VARCHAR2)IS n_length NUMBER; n_length2 NUMER;BEGIN WYBIERZ DŁUGOŚĆ( IMIĘ || NAZWISKO || E-MAIL || NUMER_TELEFONU || DATA_ZATRUDNIENIA || ID_STANOWIENIA || WYNAGRODZENIE) INTO n_length OD HR.PRACOWNIKÓW GDZIE ID_PRACOWNIKA =PN_ID_PRACOWNIKA; AKTUALIZACJA HR.EMPLOYEES SET FIRST_NAME =DECODE (FIRST_NAME, NULL, PV_FIRST_NAME, FIRST_NAME), LAST_NAME =DECODE (LAST_NAME, NULL, pv_LAST_NAME, LAST_NAME), EMAIL =DECODE (EMAIL, NULL, pv_EMAIL, EMAIL, NUMBER), NULL, pv_PHONE_NUMBER, PHONE_NUMBER), HIRE_DATE =DECODE (HIRE_DATE, NULL, pD_HIRE_DATE, HIRE_DATE), JOB_ID =DECODE (JOB_ID, NULL, pV_JOB_ID, JOB_ID), SALARY =DECODE (SALARY, NULL, pN_SALEEPLARY_, SALARY =/* Używając poniższego zapytania, aby określić, czy aktualizacja się powiodła, nie możemy użyć tutaj sql%rowcount lub sql%found, aby określić, ponieważ jeśli identyfikator pracownika jest poprawny, zawsze pokaże pomyślną aktualizację, ale musimy określić, czy jakieś pole puste wartość została zaktualizowana lub nie */ SELECT LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || WYNAGRODZENIE) NA n_długość2 OD HR.EMPLOYEES GDZIE PRACOWNIK_ID =PN_EMPLOYEE_ID; JEŻELI n_długość2> n_długość TO --- Zapisz zmiany. POPEŁNIAĆ; Pv_Sukces :='T'; INNE WYCOFANIE; pv_success :='N'; KONIEC JEŻELI; WYJĄTEK GDY INNI TO Pv_Success :='N'; WYCOFANIE;KONIEC;/