sql >> Database teknologi >  >> RDS >> Oracle

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;/
  1. Tæller DISTINCT over flere kolonner

  2. brug en variabel til tabelnavn i mysql sproc

  3. LINQ til SQL flere tabeller venstre ydre joinforbindelse

  4. PostgreSQL-serveren ville ikke lukke ned på Lion (Mac OS 10.7)