提示什么错误?
在我看来,产生错误的原因可能有两种:
一、select aa into xx from bb where cc=:new.dd;语句错误,在存储过程,触发器中,如果select into 语句未找到任何行,则触发异常错误。
错误提示可能是:未找到数据。
解决方法:加入异常处理代码。
二、insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);语句错误
因为在触发器中,:new和:old两个变量很特别,不能直接写在insert语句的values中。解决办法:将:new.ee,:new.yy的值先给变量,在用变量做插入操作。
另外,如果提示数值错误则可能是在给变量赋值时超长或类型不匹配。
给变量赋值有两种方法:into 语句赋值,:= 赋值。
在我看来,产生错误的原因可能有两种:
一、select aa into xx from bb where cc=:new.dd;语句错误,在存储过程,触发器中,如果select into 语句未找到任何行,则触发异常错误。
错误提示可能是:未找到数据。
解决方法:加入异常处理代码。
二、insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);语句错误
因为在触发器中,:new和:old两个变量很特别,不能直接写在insert语句的values中。解决办法:将:new.ee,:new.yy的值先给变量,在用变量做插入操作。
另外,如果提示数值错误则可能是在给变量赋值时超长或类型不匹配。
给变量赋值有两种方法:into 语句赋值,:= 赋值。
select * from user_errors;
declare --问题在这里
xx varchar(4);
begin
select aa into xx from bb where cc=:new.dd;
if xx is null then
xx ="9999";
end if;
insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);
end;
create or replace trigger tri_name after insert on A
begin
declare xx varchar(4);
select aa into xx from bb where cc=:new.dd;
if xx is null then
xx ="9999";
end if;
insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);
end;
可以声明内部参数,触发器是不能带输入输出参数的。
我的Select into 选出了一个空行
所以
呜呜……
害得我熬了一个下午对了,怎么把分给别人,偶刚来
很多地方不知道礼数,
请包涵