Aktualizace tabulky v Oracle, pokud je nějaká hodnota pole nulová a určení, zda je aktualizace úspěšná
Možná budete muset aktualizujte konkrétní pole tabulky nebo všechna pole, pokud jsou jejich hodnoty null, jinak není potřeba aktualizovat žádné pole. Níže je ukázkový postup pro stejný účel napsaný v tabulce HR.Employees:VYTVOŘTE NEBO NAHRAZTE POSTUP HR.UpdateEmpIfNull ( PN_EMPLOYEE_ID V ČÍSLE, PV_FIRST_NAME IN VARCHAR2, PV_LAST_NAME IN VARCHAR2, PVH2OBAR_DATE_NUMBER, INPVPVCHAR_NUMBER INPDPVCHARDATE VARCHAR2, PN_PLAT V ČÍSLE, PV_Úspěch OUT VARCHAR2)JE n_délka ČÍSLO; n_length2 ČÍSLO;ZAČÁTE VYBRAT DÉLKU( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || DATUM_NÁJMU || JOB_ID || MLA) DO n_length OD HR.ZAMĚSTNANCŮ KDE EMPLOYEE_ID =PN_EMPLOYEE_ID; AKTUALIZACE SADA HR.ZAMĚSTNANCŮ FIRST_NAME =DEKODOVAT (FIRST_NAME, NULL, PV_FIRST_NAME, FIRST_NAME), LAST_NAME =DEKODOVAT (LAST_NAME, NULL, pv_LAST_NAME, LAST_NAME), EMAIL =DECODE (EMAIL, NULL, pv_NUMBER_NUMBER, EMAIL, PHONE_NUMBER, EMAIL, EMAIL 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, EIDSARY_NULL, WLOEMPN) =YLOPNEERY, WLOEM /* Pomocí níže uvedeného dotazu k určení, zda byla aktualizace úspěšná, zde nemůžeme k určení použít sql%rowcount nebo sql%found, protože pokud je id zaměstnance správné, vždy se zobrazí úspěšná aktualizace, ale musíme určit, zda nějaké prázdné pole hodnota se aktualizovala nebo ne */ SELECT LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || PLAT) DO n_délky2 OD HR.ZAMĚSTNANCŮ KDE ZAMĚSTNANCE_ID =PN_ID_ZAMĚSTNANCE; POKUD n_length2> n_length THEN --- Uložit změny. SPÁCHAT; Pv_Success :='Y'; ELSE ROLLBACK; pv_success :='N'; END IF;EXCEPTION WHEND OTHERS THEN Pv_Success :='N'; ROLLBACK;END;/