繁体   English   中英

如何在触发器中声明函数-Oracle

[英]How to declare a function in a trigger - Oracle

我不知道如何使用Oracle中的内部函数执行此触发器

CREATE OR REPLACE TRIGGER promo 
AFTER INSERT ON promociones 
FOR EACH ROW 
DECLARE nomb VARCHAR2(20); times NUMBER; cont NUMBER;
FUNCTION veces (promo VARCHAR2(20)) 
RETURN NUMBER as cont 
BEGIN 
SELECT count(*) INTO cont FROM promociones WHERE id2=promo;
RETURN cont;
END veces; 
BEGIN 
    times:= veces(:new.id2); 
    SELECT nombre into nomb FROM promociones WHERE id=:new.id2;
    DBMS_OUTPUT.PUT_LINE (nomb || times);
END;
/

然后对我说:'当遇到以下情况之一时遇到simbol“(”::=。)@ @默认字符。 符号“:=”被替换为“(”继续。''预期以下情况之一时遇到了符号“ BEGIN”:常量异常(标识符)(双引号分隔标识符)表long double ref char '时间戳记间隔日期二进制二进制字符nchar。''在预期以下情况时遇到符号“文件结束”:begin function pragme procedure'

此触发器的实际语法如何? 请帮帮我。

错误是参数VARCHAR2(20)的“(”。在PLSQL中对函数进行编码时,不包括精度。

FUNCTION veces (promo VARCHAR2) RETURN NUMBER
as 
    cont NUMBER(38);
BEGIN 
    SELECT count(*) INTO cont FROM promociones WHERE id2=promo;
    RETURN cont;
END veces;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM