[英]ORACLE PLSQL Function/Trigger
我正在尝试创建一个FUNCTION / TRIGGER,它可以更新表supply
的status_comunal_waste
,而无需编写查询。
编辑:
TRAFFIC (date),(input_quant),(output_quant),(status)
SUPPLY (input_quant), (output_quant),(status_comunal_waste)
在我将DATE,INPUT,OUTPUT,STATUS数据导入到表TRAFFIC中后,使用触发器AIR,该数据也被导入到了表SUPPLY中,并执行了USER_CHANGES,DATE_CHANGES,USER_DELETE,DATE_DELETE列来模拟更改“如果“用户”决定更改或添加数据,则表示“用户”。
到目前为止,我已经尝试过这样的事情
create or replace TRIGGER supply_after_insert
after INSERT
ON traffic
FOR EACH ROW
DECLARE
Status_comunal_waste VARCHAR2(20);
BEGIN
SELECT SUM(input_quant) - SUM(output_quant)
into Status_comunal_waste
FROM traffic
WHERE (key_num_code =200101);
INSERT INTO supply
(Status_comunal_waste) VALUES (Status_comunal_waste);
END;
编辑:
同时,我从创建触发器切换为函数,到目前为止,它的编写过程是:
create or replace
FUNCTION stat_comunal_waste (key_num_code number)
return number
is
status_comunal_waste NUMBER;
BEGIN
if (key_num_code = 200101) THEN
SELECT SUM (input_quant) - SUM (output_quant)
into status_comunal_waste
FROM traffic
WHERE key_num_code =200101;
end if;
return status_comunal_waste;
END;
该函数编译没有错误,但是现在我得到了PACKAGE错误
CREATE OR REPLACE PACKAGE Paket
IS
function stat_comunal_waste (key_num_code number)
return status_comunal_waste;
end Paket;
/
错误(3,1):PL / SQL:声明被忽略
错误(4,8):PLS-00488:“ status_comunal_waste”必须为类型
该查询可能是错误的。
SELECT SUM(input_quant) - SUM(output_quant) into Status_comunal_waste
FROM traffic WHERE key_num_code =200101);
确保获得正确的值。 尝试将下面的查询替换为下面的代码,然后尝试一下
select SUM(input_quant) into input_q FROM traffic WHERE key_num_code =200101;
select SUM(output_quant) into output_q FROM traffic WHERE key_num_code =200101;
diff := input_q - output_q;
最终插入将如下所示:
INSERT INTO status (Status_comunal_waste) VALUES (diff);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.