2014-03-05 36 views
0

我是相当新的甲骨文这样的裸与我:P 这里是一个触发我要创建我的一个表应该从3个表或者通过更新或移动certaint数据到第4表插入取决于它是否存在。这是我到目前为止所提出的。Oracle触发器的PL/SQL错误

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) 
+0

在以@TonyAndrews您的评论回答你说你已经解决了该问题语法在你原来的代码,但编译错误依然存在。请用最近的代码更新你的问题。谢谢。 –

+0

回答了下面的问题。 – AdrianCogiel

回答

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; 

好像我搞砸语法真正的坏。这工作。

编辑: 遇到了一些问题,在触发可变误差与更新脚本固定在它上面。

+0

因为您从触发器触发的同一张表中获取突变错误。请参阅:http://stackoverflow.com/a/2138468/92837 – Sathya

+0

上面的脚本不会再得到变异错误:) – AdrianCogiel

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; 
+0

你的权利修复了它,但同样的错误依然存在。 – AdrianCogiel