【发布时间】:2017-12-01 08:37:29
【问题描述】:
我是 Oracle 的新手,我尝试编写我的第一个真正的触发器,但有一些错误... :(
这是我的代码:
create or replace TRIGGER CUSTERP_ABILITYVALUECODES_TRG
BEFORE INSERT OR UPDATE OF CODE OR DELETE ON ABILITYVALUECODES
REFERENCING NEW AS newest OLD AS oldest
FOR EACH ROW
declare s varchar2(4096);
BEGIN
if :oldest.CODE <> :newest.CODE then
if :newest.CODE is null then
s := 'NULL';
else
s := ASCIISTR(:newest.CODE);
end if;
s:= utl_url.escape(s);
if :newest.CODE is null then
CUSTERP_TRG('T_ABILITYVALUECODES', concat('C_CODE;KEY: ABILITYVALUE = ', :oldest.ABILITYVALUE, ',OLD:', :oldest.CODE, ',NEW:', s));
else
CUSTERP_TRG('T_ABILITYVALUECODES', concat('C_CODE;KEY: ABILITYVALUE =', :newest.ABILITYVALUE, ',OLD:', :oldest.CODE, ',NEW:', s));
end if;
end if;
END;
我收到以下错误: 错误(11,13):PL/SQL:语句被忽略(似乎是指 s:=...) 错误(11,53):PLS-00306:调用“CONCAT”时参数的数量或类型错误
如果我这样做:
s := 'NULL';
我得到:错误(6,13):PLS-00049:错误的绑定变量“S”
提前致谢!
【问题讨论】:
标签: sql database oracle triggers oracle-sqldeveloper