Opdatering af en tabel i Oracle, hvis en feltværdi er nul, og afgør, at opdateringen er vellykket
Du skal muligvis opdater en tabels særlige felter eller alle felter, hvis deres værdier kun er null, ellers er der ingen grund til at opdatere noget felt. Nedenfor er eksempelproceduren til samme formål skrevet på tabellen HR.Medarbejdere:OPRET ELLER ERSTAT PROCEDURE HR.UpdateEmpIfNull ( PN_EMPLOYEE_ID I NUMMER, PV_FIRST_NAME I VARCHAR2, PV_LAST_NAME IN VARCHAR2, PV_PDARONE_NUMBER, INVARCHDATE_2DATUM_2, 2. VARCHAR2, PN_LØN I TAL, PV_Succes UD VARCHAR2)IS n_længde NUMMER; n_length2 NUMBER;BEGIN SELECT LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || LØN) INTO n_length FRA HR.EMPLOYEES WHERE EMPLOYEE_ID =PN_EMPLOYEE_ID; OPDATERE 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, 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, LØN, ELØN, UDVIKLING)_NULL; /* Ved at bruge nedenstående forespørgsel til at afgøre, om opdateringen var vellykket, kan vi ikke bruge her sql%rowcount eller sql%found til at bestemme, fordi hvis medarbejder-id er korrekt, vil det altid vise en vellykket opdatering, men vi er nødt til at bestemme, om et null-felt værdien er opdateret eller ej */ SELECT LENGTH( FIRST_NAME || LAST_NAME || EMAIL || PHONE_NUMBER || HIRE_DATE || JOB_ID || LØN) INTO n_length2 FRA HR.EMPLOYEES WHERE EMPLOYEE_ID =PN_EMPLOYEE_ID; HVIS n_length2> n_length SÅ --- Gem ændringer. BEGÅ; Pv_Success :='Y'; ANDET TILBAGE TILBAGE; pv_success :='N'; END IF;EXCEPTION NÅR ANDRE SÅ Pv_Success :='N'; TILBAGE;SLUT;/