[英]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.