Uppdatera en tabell i Oracle om något fältvärde är null och fastställa att uppdateringen är framgångsrik
Du kan behöva uppdatera en tabells specifika fält eller alla fält om deras värden är null, annars finns det ingen anledning att uppdatera något fält. Nedan finns ett exempel på proceduren för samma ändamål skrivet i HR.Anställda-tabellen:SKAPA ELLER ERSÄTT PROCEDUR HR.UpdateEmpIfNull ( PN_EMPLOYEE_ID I NUMMER, PV_FIRST_NAME I VARCHAR2, PV_LAST_NAME IN VARCHAR2, PV_PDARONE_NUMBER IN PVCHRE_2DATUM_INVARCHAR_2, INVARCHAR_DATE_2, INVARCHAR_DATE_2, INVARCHAR_DATE_2. VARCHAR2, PN_LÖN I NUMMER, PV_Success OUT VARCHAR2)IS n_length NUMMER; n_length2 NUMBER;BÖRJAN VÄLJ LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || LÖN) INTO n_length FRÅN HR.EMPLOYEES WHERE EMPLOYEE_ID =PN_EMPLOYEE_ID; UPPDATERA 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), E-POST =DECODE (EMAIL, NULL, PHODENUMMER, PHODENUMMER, PHODENUMMER, PHODENUMMER, PHODENR. 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), LÖN =DECODE (LÖN, NULL_SALARY, NULL_SALARY, NULL; /* Genom att använda nedanstående fråga för att avgöra om uppdateringen lyckades, kan vi inte använda här sql%rowcount eller sql%found för att avgöra eftersom om anställd-id är korrekt kommer det alltid att visa en lyckad uppdatering men vi måste avgöra om något nullfält värde har uppdaterats eller inte */ SELECT LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || LÖN) INTO n_length2 FRÅN HR.EMPLOYEES WHERE EMPLOYEE_ID =PN_EMPLOYEE_ID; OM n_längd2> n_längd DÅ --- Spara ändringar. BEGÅ; Pv_Success :='Y'; ANNARS ROLLBACK; pv_success :='N'; END IF;EXCEPTION NÄR ANDRA DÅ Pv_Success :='N'; ROLLBACK;SLUT;/