+ -
当前位置:首页 → 问答吧 → pls-00103 出现符号if在需要下列之一时

pls-00103 出现符号if在需要下列之一时

时间:2011-09-22

来源:互联网

这个触发器的需求是当T_BUSI_PRESEND_MX表插入以后,触发update set codetype=...
由于codetype的值是需要刚插入的id来查询出来的,所以必须先得到刚插入的id的值:

create or replace trigger trg_after_table
after insert  
on T_BUSI_PRESEND_MX  
FOR EACH ROW
declare  
tr_mxid varchar2(20);
if insert(T_BUSI_PRESEND_MX)
begin
  update T_BUSI_PRESEND_MX set tr_mxid=(select id from T_BUSI_PRESEND_MX,inserted),CODETYPE=fn_numbertype(tr_mxid)
  where id=tr_mxid;
end;
end if;

编译后 报标题错误,在线等 谢谢

作者: wanglilin   发布时间: 2011-09-22

沙发!

作者: qq707909149   发布时间: 2011-09-22

SQL code
CREATE OR REPLACE TRIGGER TRG_AFTER_TABLE
  AFTER INSERT ON T_BUSI_PRESEND_MX
  FOR EACH ROW
LZ逻辑不是很清晰,代码有语法错误,试着帮你改了下
DECLARE
BEGIN
  UPDATE T_BUSI_PRESEND_MX
     SET TR_MXID = :NEW.ID--这个id是新记录的id, 如果要用TR_MXID栏位的话直接换掉就可以
     , CODETYPE = FN_NUMBERTYPE(:NEW.TR_MXID)
   WHERE ID = :NEW.TR_MXID;
EXCEPTION
  WHEN OTHERS THEN
    RETURN;
END;
END IF;

作者: tx2730   发布时间: 2011-09-22

LZ逻辑不是很清晰,代码有语法错误,试着帮你改了下
SQL code
CREATE OR REPLACE TRIGGER TRG_AFTER_TABLE
  AFTER INSERT ON T_BUSI_PRESEND_MX
  FOR EACH ROW
DECLARE
BEGIN
  UPDATE T_BUSI_PRESEND_MX
     SET TR_MXID = :NEW.ID--这个id是新记录的id, 如果要用TR_MXID栏位的话直接换掉就可以
     , CODETYPE = FN_NUMBERTYPE(:NEW.TR_MXID)
   WHERE ID = :NEW.TR_MXID;
EXCEPTION
  WHEN OTHERS THEN
    RETURN;
END;
END IF;

作者: tx2730   发布时间: 2011-09-22

if insert(T_BUSI_PRESEND_MX) then

作者: luoyoumou   发布时间: 2011-09-22

引用 4 楼 luoyoumou 的回复:

if insert(T_BUSI_PRESEND_MX) then


-- 加个 then

作者: luoyoumou   发布时间: 2011-09-22

-- 你这个触发器有严重的错误!不说啦:自己先去了解Oracle触发器方面的知识吧!

作者: luoyoumou   发布时间: 2011-09-22

加了then也报错啊。这次不但报标题的错还多了一个 
提示变量 tr_mxid 已声明 但从来没有使用过

作者: wanglilin   发布时间: 2011-09-22

引用 7 楼 wanglilin 的回复:

加了then也报错啊。这次不但报标题的错还多了一个
提示变量 tr_mxid 已声明 但从来没有使用过


变量名最好别与字段名相同:否则,有些时候,Oracle都不知道你的where条件到底是怎么比较?

where id=tr_mxid;

作者: luoyoumou   发布时间: 2011-09-22

引用 8 楼 luoyoumou 的回复:

引用 7 楼 wanglilin 的回复:

加了then也报错啊。这次不但报标题的错还多了一个
提示变量 tr_mxid 已声明 但从来没有使用过


变量名最好别与字段名相同:否则,有些时候,Oracle都不知道你的where条件到底是怎么比较?

where id=tr_mxid;


-- 还会有错误滴,接着弄吧....

作者: luoyoumou   发布时间: 2011-09-22

热门下载

更多