CREATE OR REPLACE FUNCTION EDUBIS.getpxfx(V_pxfx in varchar2) RETURN VARCHAR2 IS
pxfx varchar2(1000);
begin
SELECT WM_CONCAT(b.codename)
INTO pxfx
FROM (SELECT COLUMN_VALUE FROM TABLE(splitstr(V_pxfx, ','))) a,
up_codelist B
WHERE codekind = 'NEUEDU_GS_PXFX'
AND a.COLUMN_VALUE = b.CODEVALUE(+);
return(pxfx);
exception
when NO_DATA_FOUND then
DBMS_OUTPUT.PUT_LINE('查不到数据。');
return NULL;
end getpxfx;
CREATE OR REPLACE TRIGGER "EDUBIS".bdh_JFXSJFXXBb
BEFORE UPDATE OR INSERT OR DELETE
ON edubis.SFXT_JFXSJFXXB
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
err_num NUMBER;
err_msg CHAR (100);
flag NUMBER;
error_update EXCEPTION;
error_insert EXCEPTION;
error_delete EXCEPTION;
BEGIN
IF UPDATING
--当记录被修改
THEN
IF (:NEW.bdhbz <> '0' AND :OLD.bdhbz = '1')
THEN
RAISE error_update;
END IF;
END IF;
IF INSERTING
THEN
SELECT COUNT (*)
INTO flag
FROM HTXM_XMRYGX b,HTXM_XMHTGX c,BDH_SJXZ a
WHERE a.htbh=c.htbh and b.xmbh=c.xmbh and b.xybh=:new.xyxyh;
IF flag > 0
THEN
raise_application_error (-20004, '数据被本地化模块锁定');
END IF;
END IF;
IF DELETING
THEN
IF (:OLD.bdhbz = '1')
THEN
RAISE error_delete;
END IF;
END IF;
EXCEPTION
WHEN error_update
THEN
raise_application_error (-20003, '数据被本地化模块锁定');
WHEN error_insert
THEN
raise_application_error (-20004, '数据被本地化模块锁定');
WHEN error_delete
THEN
raise_application_error (-20003, '数据被本地化模块锁定');
WHEN OTHERS
THEN
err_num := SQLCODE;
err_msg := SUBSTR (SQLERRM, 1, 100);
DBMS_OUTPUT.put_line (err_msg);
END;
/
ALTER TRIGGER BDH_JFXSJFXXBB DISABLE
/