Oracle触发pl / sql错误

时间:2014-03-05 09:56:14

标签: sql oracle plsql

这是我想在我的一个表上创建的触发器,它应该通过更新或插入将确定数据从3个表移动到第4个表,具体取决于是否存在。这是我到目前为止所提出的。

CREATE or REPLACE TRIGGER UMELD_PWEL_TRIG
AFTER INSERT OR UPDATE ON USCADM.USC_UMELD
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW WHEN (NEW.PWEL_STAT = 1) 
DECLARE 
  ILOSC INT;
BEGIN
  select count(*) INTO ILOSC from USCADM.USC_PESELU where RK = :NEW.RK AND DZ = :NEW.DZ AND NR = :NEW.NR AND NRP = :NEW.NRP AND IDUSC = :NEW.IDUSC;

  if ILOSC = 1 then
    update PESEL set PESEL.IDUSC = ODPSKR.IDUSC, PESEL.RK = ODPSKR.RK, PESEL.DZ = ODPSKR.DZ, PESEL.NR = ODPSKR.NR, PESEL.NRP = ODPSKR.NRP, PESEL.DZPL = ODPSKR.DZPL, 
    PESEL.NRO = ODPSKR.NRO, PESEL.NAZWPL = ODPSKR.NAZWPL, PESEL.NAZW = ODPSKR.NAZW, PESEL.IMIE1PL = ODPSKR.IMIE1PL, PESEL.IMIE1 = ODPSKR.IMIE1, PESEL.IMIER = ODPSKR.IMIER, 
    PESEL.UR_DATAR = ODPSKR.UR_DATAR, PESEL.UR_DATAM = ODPSKR.UR_DATAM, PESEL.UR_DATAD = ODPSKR.UR_DATAD, PESEL.UR_MSC = ODPSKR.UR_MSC, PESEL.IDUR_MSC = ODPSKR.IDUR_MSC, 
    PESEL.KTUR_MSC = USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), PESEL.UR_KRAJ = ODPSKR.UR_KRAJ, PESEL.OJ_NAZW = ODPSKR.OJ_NAZW, PESEL.OJ_NAZWR = ODPSKR.OJ_NAZWR, 
    PESEL.OJ_IMIE1 = ODPSKR.OJ_IMIE1, PESEL.OJ_IMIER = ODPSKR.OJ_IMIER, PESEL.MA_NAZW = ODPSKR.MA_NAZW, PESEL.MA_NAZWRPL = ODPSKR.MA_NAZWRPL, PESEL.MA_NAZWR = ODPSKR.MA_NAZWR, 
    PESEL.MA_IMIE1 = ODPSKR.MA_IMIE1, PESEL.MA_IMIER = ODPSKR.MA_IMIER, PESEL.PESEL = MELD.PESEL, PESEL.A_MSC = MELD.A_MSC, PESEL.IDA_MSC = MELD.IDA_MSC,
    PESEL.KRA_MSC = USCADM.fnNrStatToTeryt(MELD.IDA_MSC), PESEL.A_MSC_KP = MELD.A_MSC_KP, PESEL.A_ULICA = MELD.A_ULICA, PESEL.A_DOM = MELD.A_DOM, PESEL.A_LOKAL = MELD.A_LOKAL,
    PESEL.A_KRAJ = MELD.A_KRAJ, PESEL.TYP_ADR = MELD.TYP_ADR, PESEL.MPESEL = MELD.MPESEL, PESEL.OPESEL = MELD.OPESEL, PESEL.M_DOW_TYP = MELD.M_DOW_TYP, PESEL.M_DOW_NR = MELD.M_DOW_NR,
    PESEL.M_DOW_WYD = MELD.M_DOW_WYD, PESEL.M_DOW_MSC = MELD.M_DOW_MSC, PESEL.IDM_DOW_MSC = MELD.IDM_DOW_MSC, PESEL.M_DOW_DATAR = MELD.M_DOW_DATAR, PESEL.M_DOW_DATAM = MELD.M_DOW_DATAM,
    PESEL.M_DOW_DATAD = MELD.M_DOW_DATAD, PESEL.M_DOW_KRAJ = MELD.M_DOW_KRAJ, PESEL.O_DOW_TYP = MELD.O_DOW_TYP, PESEL.O_DOW_NR = MELD.O_DOW_NR, PESEL.O_DOW_WYD = MELD.O_DOW_WYD, 
    PESEL.O_DOW_MSC = MELD.O_DOW_MSC, PESEL.IDO_DOW_MSC = MELD.IDO_DOW_MSC, PESEL.O_DOW_DATAR = MELD.O_DOW_DATAR, PESEL.O_DOW_DATAM = MELD.O_DOW_DATAM, PESEL.O_DOW_DATAD = MELD.O_DOW_DATAD, 
    PESEL.O_DOW_KRAJ = MELD.O_DOW_KRAJ, PESEL.PLEC = ODPSKR.PLEC, PESEL.WA_DATAR = AKT.WA_DATAR, PESEL.WA_DATAM = AKT.WA_DATAM, PESEL.WA_DATAD = AKT.WA_DATAD, PESEL.ODP_KTO = ODPSKR.IDMR_KTO,
    PESEL.ODP_KIEDY = ODPSKR.IDMR_KIEDYS, PESEL.MEL_KTO = MELD.IDMR_KTO, PESEL.MEL_KIEDY = ODPSKR.IDMR_KIEDYS, PESEL.ZD_DATAR = ODPSKR.ZD_DATAR, PESEL.ZD_DATAM = ODPSKR.ZD_DATAM,
    PESEL.ZD_DATAD = ODPSKR.ZD_DATAD, PESEL.ZD_UPR_DATAR = ODPSKR.ZD_UPR_DATAR, PESEL.ZD_UPR_DATAM = ODPSKR.ZD_UPR_DATAM, PESEL.ZD_UPR_DATAD = ODPSKR.ZD_UPR_DATAD, PESEL.ZD_N = ODPSKR.ZD_N,
    PESEL.ZD_KOD = ODPSKR.ZD_KOD, PESEL.ZD_DOK = ODPSKR.ZD_DOK, PESEL.ZD_ORG = ODPSKR.ZD_ORG, PESEL.ZD_ORG_OPIS = ODPSKR.ZD_ORG_OPIS, PESEL.ZD_MSC = ODPSKR.ZD_MSC, PESEL.IDZD_MSC = ODPSKR.IDZD_MSC,
    PESEL.AKT_KIEDY = AKT.IDMR_KIEDYS
    from USCADM.USC_UODPSKR as ODPSKR 
    join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
    join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
    join USCADM.USC_PESELU as PESEL on ODPSKR.RK = PESEL.RK AND ODPSKR.DZ = PESEL.DZ AND ODPSKR.NR = PESEL.NR AND ODPSKR.NRP = PESEL.NRP AND ODPSKR.IDUSC = PESEL.IDUSC
    WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;
  elsif ILOSC = 0 then
    insert into USCADM.USC_PESELU (IDUSC, RK, DZ, NR, NRP, DZPL, NRO, NAZWPL, NAZW, IMIE1PL, IMIE1, IMIER, UR_DATAR, UR_DATAM, UR_DATAD, UR_MSC, IDUR_MSC, KTUR_MSC,PESEL.UR_KRAJ,
    OJ_NAZW, OJ_NAZWR, OJ_IMIE1, OJ_IMIER, MA_NAZW, MA_NAZWRPL, MA_NAZWR, MA_IMIE1, MA_IMIER, PESEL, A_MSC, IDA_MSC, KRA_MSC, A_MSC_KP, A_ULICA, A_DOM, A_LOKAL,
    A_KRAJ, TYP_ADR,MPESEL,OPESEL,M_DOW_TYP,M_DOW_NR, M_DOW_WYD, M_DOW_MSC, IDM_DOW_MSC, M_DOW_DATAR,M_DOW_DATAM, M_DOW_DATAD, M_DOW_KRAJ, O_DOW_TYP, O_DOW_NR, O_DOW_WYD,O_DOW_MSC,
    IDO_DOW_MSC,O_DOW_DATAR,O_DOW_DATAM,O_DOW_DATAD, O_DOW_KRAJ, PLEC, WA_DATAR,WA_DATAM, WA_DATAD, ODP_KTO, ODP_KIEDY, MEL_KTO, MEL_KIEDY, ZD_DATAR, ZD_DATAM, ZD_DATAD, ZD_UPR_DATAR,
    ZD_UPR_DATAM, ZD_UPR_DATAD, ZD_N,  ZD_KOD, ZD_DOK, ZD_ORG, ZD_ORG_OPIS, ZD_MSC, IDZD_MSC, AKT_KIEDY) 
    VALUES(ODPSKR.IDUSC,ODPSKR.RK,ODPSKR.DZ,ODPSKR.NR,ODPSKR.NRP,ODPSKR.DZPL,ODPSKR.NRO,ODPSKR.NAZWPL,ODPSKR.NAZW,ODPSKR.IMIE1PL,ODPSKR.IMIE1,ODPSKR.IMIER,ODPSKR.UR_DATAR,ODPSKR.UR_DATAM,
    ODPSKR.UR_DATAD, ODPSKR.UR_MSC,ODPSKR.IDUR_MSC, USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), ODPSKR.UR_KRAJ, ODPSKR.OJ_NAZW,ODPSKR.OJ_NAZWR, ODPSKR.OJ_IMIE1, ODPSKR.OJ_IMIER,ODPSKR.MA_NAZW,
    ODPSKR.MA_NAZWRPL,ODPSKR.MA_NAZWR,ODPSKR.MA_IMIE1,ODPSKR.MA_IMIER,MELD.PESEL,MELD.A_MSC,MELD.IDA_MSC, USCADM.fnNrStatToTeryt(MELD.IDA_MSC), MELD.A_MSC_KP, MELD.A_ULICA, MELD.A_DOM,
    MELD.A_LOKAL, MELD.A_KRAJ,MELD.TYP_ADR,MELD.MPESEL,MELD.OPESEL,MELD.M_DOW_TYP,MELD.M_DOW_NR, MELD.M_DOW_WYD,MELD.M_DOW_MSC,MELD.IDM_DOW_MSC,MELD.M_DOW_DATAR,MELD.M_DOW_DATAM,   
    MELD.M_DOW_DATAD,MELD.M_DOW_KRAJ,MELD.O_DOW_TYP,MELD.O_DOW_NR,MELD.O_DOW_WYD, MELD.O_DOW_MSC,MELD.IDO_DOW_MSC,MELD.O_DOW_DATAR,MELD.O_DOW_DATAM,MELD.O_DOW_DATAD, MELD.O_DOW_KRAJ,
    ODPSKR.PLEC,AKT.WA_DATAR,AKT.WA_DATAM,AKT.WA_DATAD,ODPSKR.IDMR_KTO, ODPSKR.IDMR_KIEDYS,MELD.IDMR_KTO,ODPSKR.IDMR_KIEDYS,ODPSKR.ZD_DATAR,ODPSKR.ZD_DATAM, ODPSKR.ZD_DATAD, ODPSKR.ZD_UPR_DATAR,
    ODPSKR.ZD_UPR_DATAM,ODPSKR.ZD_UPR_DATAD,ODPSKR.ZD_N, ODPSKR.ZD_KOD,ODPSKR.ZD_DOK,ODPSKR.ZD_ORG,ODPSKR.ZD_ORG_OPIS,ODPSKR.ZD_MSC,ODPSKR.IDZD_MSC, AKT.IDMR_KIEDYS)
    from USCADM.USC_UODPSKR as ODPSKR 
    join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
    join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
    WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;
  end if;

END UMELD_PWEL_TRIG;

我收到以下错误:

Error(7,5): PL/SQL: SQL Statement ignored
Error(23,5): PL/SQL: ORA-00933: polecenie SQL niepoprawnie zakończone (not finished correctly)
Error(29,5): PL/SQL: SQL Statement ignored 
Error(41,5): PL/SQL: ORA-00933: polecenie SQL niepoprawnie zakończone (not finished correctly)

2 个答案:

答案 0 :(得分:1)

你混淆了INSERT ... VALUES和INSERT ... SELECT语法。你的INSERT应该是:

insert into USCADM.USC_PESELU (IDUSC, RK, DZ, NR, NRP, DZPL, NRO, NAZWPL, NAZW, IMIE1PL, IMIE1, IMIER, UR_DATAR, UR_DATAM, UR_DATAD, UR_MSC, IDUR_MSC, KTUR_MSC,PESEL.UR_KRAJ,
OJ_NAZW, OJ_NAZWR, OJ_IMIE1, OJ_IMIER, MA_NAZW, MA_NAZWRPL, MA_NAZWR, MA_IMIE1, MA_IMIER, PESEL, A_MSC, IDA_MSC, KRA_MSC, A_MSC_KP, A_ULICA, A_DOM, A_LOKAL,
A_KRAJ, TYP_ADR,MPESEL,OPESEL,M_DOW_TYP,M_DOW_NR, M_DOW_WYD, M_DOW_MSC, IDM_DOW_MSC, M_DOW_DATAR,M_DOW_DATAM, M_DOW_DATAD, M_DOW_KRAJ, O_DOW_TYP, O_DOW_NR, O_DOW_WYD,O_DOW_MSC,
IDO_DOW_MSC,O_DOW_DATAR,O_DOW_DATAM,O_DOW_DATAD, O_DOW_KRAJ, PLEC, WA_DATAR,WA_DATAM, WA_DATAD, ODP_KTO, ODP_KIEDY, MEL_KTO, MEL_KIEDY, ZD_DATAR, ZD_DATAM, ZD_DATAD, ZD_UPR_DATAR,
ZD_UPR_DATAM, ZD_UPR_DATAD, ZD_N,  ZD_KOD, ZD_DOK, ZD_ORG, ZD_ORG_OPIS, ZD_MSC, IDZD_MSC, AKT_KIEDY) 
SELECT ODPSKR.IDUSC,ODPSKR.RK,ODPSKR.DZ,ODPSKR.NR,ODPSKR.NRP,ODPSKR.DZPL,ODPSKR.NRO,ODPSKR.NAZWPL,ODPSKR.NAZW,ODPSKR.IMIE1PL,ODPSKR.IMIE1,ODPSKR.IMIER,ODPSKR.UR_DATAR,ODPSKR.UR_DATAM,
ODPSKR.UR_DATAD, ODPSKR.UR_MSC,ODPSKR.IDUR_MSC, USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), ODPSKR.UR_KRAJ, ODPSKR.OJ_NAZW,ODPSKR.OJ_NAZWR, ODPSKR.OJ_IMIE1, ODPSKR.OJ_IMIER,ODPSKR.MA_NAZW,
ODPSKR.MA_NAZWRPL,ODPSKR.MA_NAZWR,ODPSKR.MA_IMIE1,ODPSKR.MA_IMIER,MELD.PESEL,MELD.A_MSC,MELD.IDA_MSC, USCADM.fnNrStatToTeryt(MELD.IDA_MSC), MELD.A_MSC_KP, MELD.A_ULICA, MELD.A_DOM,
MELD.A_LOKAL, MELD.A_KRAJ,MELD.TYP_ADR,MELD.MPESEL,MELD.OPESEL,MELD.M_DOW_TYP,MELD.M_DOW_NR, MELD.M_DOW_WYD,MELD.M_DOW_MSC,MELD.IDM_DOW_MSC,MELD.M_DOW_DATAR,MELD.M_DOW_DATAM,   
MELD.M_DOW_DATAD,MELD.M_DOW_KRAJ,MELD.O_DOW_TYP,MELD.O_DOW_NR,MELD.O_DOW_WYD, MELD.O_DOW_MSC,MELD.IDO_DOW_MSC,MELD.O_DOW_DATAR,MELD.O_DOW_DATAM,MELD.O_DOW_DATAD, MELD.O_DOW_KRAJ,
ODPSKR.PLEC,AKT.WA_DATAR,AKT.WA_DATAM,AKT.WA_DATAD,ODPSKR.IDMR_KTO, ODPSKR.IDMR_KIEDYS,MELD.IDMR_KTO,ODPSKR.IDMR_KIEDYS,ODPSKR.ZD_DATAR,ODPSKR.ZD_DATAM, ODPSKR.ZD_DATAD, ODPSKR.ZD_UPR_DATAR,
ODPSKR.ZD_UPR_DATAM,ODPSKR.ZD_UPR_DATAD,ODPSKR.ZD_N, ODPSKR.ZD_KOD,ODPSKR.ZD_DOK,ODPSKR.ZD_ORG,ODPSKR.ZD_ORG_OPIS,ODPSKR.ZD_MSC,ODPSKR.IDZD_MSC, AKT.IDMR_KIEDYS
from USCADM.USC_UODPSKR as ODPSKR 
join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;

答案 1 :(得分:0)

CREATE OR replace TRIGGER umeld_pwel_trig
  BEFORE INSERT OR UPDATE ON uscadm.usc_umeld
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
  WHEN (NEW.pwel_stat = 1)
DECLARE
    ilosc INT := 0;
BEGIN
    SELECT Count(*)
    INTO   ilosc
    FROM   uscadm.usc_peselu
    WHERE  rk = :NEW.rk
           AND dz = :NEW.dz
           AND nr = :NEW.nr
           AND nrp = :NEW.nrp
           AND idusc = :NEW.idusc;

    IF ilosc = 1 THEN
      UPDATE uscadm.usc_peselu
      SET    ( idusc, rk, dz, nr,
               nrp, dzpl, nro, nazwpl,
               nazw, imie1pl, imie1, imier,
               ur_datar, ur_datam, ur_datad, ur_msc,
               idur_msc, ktur_msc, ur_kraj, oj_nazw,
               oj_nazwr, oj_imie1, oj_imier, ma_nazw,
               ma_nazwrpl, ma_nazwr, ma_imie1, ma_imier,
               pesel, a_msc, ida_msc, kta_msc,
               a_msc_kp, a_ulica, a_dom, a_lokal,
               a_kraj, typ_adr, mpesel, opesel,
               m_dow_typ, m_dow_nr, m_dow_wyd, m_dow_msc,
               idm_dow_msc, m_dow_datar, m_dow_datam, m_dow_datad,
               m_dow_kraj, o_dow_typ, o_dow_nr, o_dow_wyd,
               o_dow_msc, ido_dow_msc, o_dow_datar, o_dow_datam,
               o_dow_datad, o_dow_kraj, plec, wa_datar,
               wa_datam, wa_datad, odp_kto, odp_kiedy,
               mel_kto, mel_kiedy, zd_datar, zd_datam,
               zd_datad, zd_upr_datar, zd_upr_datam, zd_upr_datad,
               zd_n, zd_kod, zd_dok, zd_org,
               zd_org_opis, zd_msc, idzd_msc ) = (SELECT ODPSKR.idusc,
                                                         ODPSKR.rk,
                                                         ODPSKR.dz,
                                                         ODPSKR.nr,
                                                         ODPSKR.nrp,
                                                         ODPSKR.dzpl,
                                                         ODPSKR.nro,
                                                         ODPSKR.nazwpl,
                                                         ODPSKR.nazw,
                                                         ODPSKR.imie1pl,
                                                         ODPSKR.imie1,
                                                         ODPSKR.imier,
                                                         ODPSKR.ur_datar,
                                                         ODPSKR.ur_datam,
                                                         ODPSKR.ur_datad,
                                                         ODPSKR.ur_msc,
                                                         ODPSKR.idur_msc,
             uscadm.Fnnrstattoteryt(ODPSKR.idur_msc),
             ODPSKR.ur_kraj,
             ODPSKR.oj_nazw,
             ODPSKR.oj_nazwr,
             ODPSKR.oj_imie1,
             ODPSKR.oj_imier,
             ODPSKR.ma_nazw,
             ODPSKR.ma_nazwrpl,
             ODPSKR.ma_nazwr,
             ODPSKR.ma_imie1,
             ODPSKR.ma_imier,
             :NEW.pesel,
             :NEW.a_msc,
             :NEW.ida_msc,
             uscadm.Fnnrstattoteryt(:NEW.ida_msc),
             :NEW.a_msc_kp,
             :NEW.a_ulica,
             :NEW.a_dom,
             :NEW.a_lokal,
             :NEW.a_kraj,
             :NEW.typ_adr,
             :NEW.mpesel,
             :NEW.opesel,
             :NEW.m_dow_typ,
             :NEW.m_dow_nr,
             :NEW.m_dow_wyd,
             :NEW.m_dow_msc,
             :NEW.idm_dow_msc,
             :NEW.m_dow_datar,
             :NEW.m_dow_datam,
             :NEW.m_dow_datad,
             :NEW.m_dow_kraj,
             :NEW.o_dow_typ,
             :NEW.o_dow_nr,
             :NEW.o_dow_wyd,
             :NEW.o_dow_msc,
             :NEW.ido_dow_msc,
             :NEW.o_dow_datar,
             :NEW.o_dow_datam,
             :NEW.o_dow_datad,
             :NEW.o_dow_kraj,
             ODPSKR.plec,
             AKT.wa_datar,
             AKT.wa_datam,
             AKT.wa_datad,
             ODPSKR.idmr_kto,
             ODPSKR.idmr_kiedys,
             :NEW.idmr_kto,
             :NEW.idmr_kiedys,
             ODPSKR.zd_datar,
             ODPSKR.zd_datam,
             ODPSKR.zd_datad,
             ODPSKR.zd_upr_datar,
             ODPSKR.zd_upr_datam,
             ODPSKR.zd_upr_datad,
             ODPSKR.zd_n,
             ODPSKR.zd_kod,
             ODPSKR.zd_dok,
             ODPSKR.zd_org,
             ODPSKR.zd_org_opis,
             ODPSKR.zd_msc,
             ODPSKR.idzd_msc
             FROM   uscadm.usc_uodpskr ODPSKR
             join uscadm.usc_uakt AKT
               ON ODPSKR.rk = AKT.rk
                  AND ODPSKR.dz = AKT.dz
                  AND ODPSKR.nr = AKT.nr
                  AND ODPSKR.nrp = AKT.nrp
                  AND ODPSKR.idusc = AKT.idusc
             WHERE  ODPSKR.rk = :NEW.rk
             AND ODPSKR.dz = :NEW.dz
             AND ODPSKR.nr = :NEW.nr
             AND ODPSKR.nrp = :NEW.nrp
             AND ODPSKR.idusc = :NEW.idusc);

      :NEW.pwel_stat := 2;
    ELSIF ilosc = 0 THEN
      INSERT INTO uscadm.usc_peselu
                  (idusc,
                   rk,
                   dz,
                   nr,
                   nrp,
                   dzpl,
                   nro,
                   nazwpl,
                   nazw,
                   imie1pl,
                   imie1,
                   imier,
                   ur_datar,
                   ur_datam,
                   ur_datad,
                   ur_msc,
                   idur_msc,
                   ktur_msc,
                   ur_kraj,
                   oj_nazw,
                   oj_nazwr,
                   oj_imie1,
                   oj_imier,
                   ma_nazw,
                   ma_nazwrpl,
                   ma_nazwr,
                   ma_imie1,
                   ma_imier,
                   pesel,
                   a_msc,
                   ida_msc,
                   kta_msc,
                   a_msc_kp,
                   a_ulica,
                   a_dom,
                   a_lokal,
                   a_kraj,
                   typ_adr,
                   mpesel,
                   opesel,
                   m_dow_typ,
                   m_dow_nr,
                   m_dow_wyd,
                   m_dow_msc,
                   idm_dow_msc,
                   m_dow_datar,
                   m_dow_datam,
                   m_dow_datad,
                   m_dow_kraj,
                   o_dow_typ,
                   o_dow_nr,
                   o_dow_wyd,
                   o_dow_msc,
                   ido_dow_msc,
                   o_dow_datar,
                   o_dow_datam,
                   o_dow_datad,
                   o_dow_kraj,
                   plec,
                   wa_datar,
                   wa_datam,
                   wa_datad,
                   odp_kto,
                   odp_kiedy,
                   mel_kto,
                   mel_kiedy,
                   zd_datar,
                   zd_datam,
                   zd_datad,
                   zd_upr_datar,
                   zd_upr_datam,
                   zd_upr_datad,
                   zd_n,
                   zd_kod,
                   zd_dok,
                   zd_org,
                   zd_org_opis,
                   zd_msc,
                   idzd_msc)
      SELECT ODPSKR.idusc,
             ODPSKR.rk,
             ODPSKR.dz,
             ODPSKR.nr,
             ODPSKR.nrp,
             ODPSKR.dzpl,
             ODPSKR.nro,
             ODPSKR.nazwpl,
             ODPSKR.nazw,
             ODPSKR.imie1pl,
             ODPSKR.imie1,
             ODPSKR.imier,
             ODPSKR.ur_datar,
             ODPSKR.ur_datam,
             ODPSKR.ur_datad,
             ODPSKR.ur_msc,
             ODPSKR.idur_msc,
             uscadm.Fnnrstattoteryt(ODPSKR.idur_msc),
             ODPSKR.ur_kraj,
             ODPSKR.oj_nazw,
             ODPSKR.oj_nazwr,
             ODPSKR.oj_imie1,
             ODPSKR.oj_imier,
             ODPSKR.ma_nazw,
             ODPSKR.ma_nazwrpl,
             ODPSKR.ma_nazwr,
             ODPSKR.ma_imie1,
             ODPSKR.ma_imier,
             :NEW.pesel,
             :NEW.a_msc,
             :NEW.ida_msc,
             uscadm.Fnnrstattoteryt(:NEW.ida_msc),
             :NEW.a_msc_kp,
             :NEW.a_ulica,
             :NEW.a_dom,
             :NEW.a_lokal,
             :NEW.a_kraj,
             :NEW.typ_adr,
             :NEW.mpesel,
             :NEW.opesel,
             :NEW.m_dow_typ,
             :NEW.m_dow_nr,
             :NEW.m_dow_wyd,
             :NEW.m_dow_msc,
             :NEW.idm_dow_msc,
             :NEW.m_dow_datar,
             :NEW.m_dow_datam,
             :NEW.m_dow_datad,
             :NEW.m_dow_kraj,
             :NEW.o_dow_typ,
             :NEW.o_dow_nr,
             :NEW.o_dow_wyd,
             :NEW.o_dow_msc,
             :NEW.ido_dow_msc,
             :NEW.o_dow_datar,
             :NEW.o_dow_datam,
             :NEW.o_dow_datad,
             :NEW.o_dow_kraj,
             ODPSKR.plec,
             AKT.wa_datar,
             AKT.wa_datam,
             AKT.wa_datad,
             ODPSKR.idmr_kto,
             ODPSKR.idmr_kiedys,
             :NEW.idmr_kto,
             ODPSKR.idmr_kiedys,
             ODPSKR.zd_datar,
             ODPSKR.zd_datam,
             ODPSKR.zd_datad,
             ODPSKR.zd_upr_datar,
             ODPSKR.zd_upr_datam,
             ODPSKR.zd_upr_datad,
             ODPSKR.zd_n,
             ODPSKR.zd_kod,
             ODPSKR.zd_dok,
             ODPSKR.zd_org,
             ODPSKR.zd_org_opis,
             ODPSKR.zd_msc,
             ODPSKR.idzd_msc
      FROM   uscadm.usc_uodpskr ODPSKR
             join uscadm.usc_uakt AKT
               ON ODPSKR.rk = AKT.rk
                  AND ODPSKR.dz = AKT.dz
                  AND ODPSKR.nr = AKT.nr
                  AND ODPSKR.nrp = AKT.nrp
                  AND ODPSKR.idusc = AKT.idusc
      WHERE  ODPSKR.rk = :NEW.rk
             AND ODPSKR.dz = :NEW.dz
             AND ODPSKR.nr = :NEW.nr
             AND ODPSKR.nrp = :NEW.nrp
             AND ODPSKR.idusc = :NEW.idusc;

      :NEW.pwel_stat := 2;
    END IF;
END umeld_pwel_trig; 

好像我搞砸了语法真的很糟糕。这很有效。

编辑: 如果触发器中有可变错误的一些问题,请使用上面更新的脚本修复它。