如何在触发器内调用 PL/SQL 函数

2024-01-19

我是 pl/sql 新手。谁能告诉我如何在触发器内调用 pl/sql 函数。

我厌倦了它,但当我尝试运行它时它给出了错误。

DROP TRIGGER INTF_CONTROLLER_TREXE;

CREATE OR REPLACE TRIGGER INTF_CONTROLLER_TREXE
before insert ON INTF_CONTROLLER for each row
begin
BACKOFFICE_UPDATE();
end;


CREATE OR REPLACE FUNCTION BACKOFFICE_UPDATE
RETURN NUMBER IS
tmpVar NUMBER;

BEGIN
   tmpVar := 0;
   DBMS_OUTPUT.put_line ('HELLO');
   RETURN tmpVar;


   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END BACKOFFICE_UPDATE;

我尝试使用 TOAD 来运行它。它给出以下错误

PLS-00221:“BACKOFFICE_UPDATE”不是过程或未定义


您需要将函数调用的结果存储在局部变量中

For example:
CREATE OR REPLACE TRIGGER INTF_CONTROLLER_TREXE 
before insert ON INTF_CONTROLLER for each row 
declare
dummy NUMBER;
begin 
dummy := BACKOFFICE_UPDATE(); 
end; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在触发器内调用 PL/SQL 函数 的相关文章

  • SQL 查询中的游标

    在 Oracle 中 可以返回cursor在 SQL 查询中 使用cursor关键字 像这样 select owner table name cursor select column name from all tab columns wh
  • 使用 Oracle PL/SQL 存储过程授予其他用户表的权限

    我遇到了执行以下操作的应用程序的问题 PL SQL 包 A 包含应用程序的所有函数 过程 A 由 USER A 拥有 A 在 Oracle 中创建用户帐户 并在这些用户下创建表 A 还必须能够 TRUNCATE INSERT 到用户的表 注
  • oracle pl/sql中的XML解析

    我正在尝试在 PL SQL 中解析此 XML
  • 如何在oracle DB中存储日文字符?

    我想将日语 或任何语言 字符存储在我的 Oracle 数据库表的一列中 我使用 varchar2 作为数据类型 当我尝试将此字符 插入到该列时 它存储为 不知道该怎么办 需要帮忙 Note 我尝试将数据类型更改为 nvarchar2 仍然不
  • 在游标内使用 Merge 语句

    我们需要填充一个主表 该表由 20 个不同表中的列组成 我编写了一个存储过程来连接一些返回最大列数的表并将它们放在游标中 现在 我正在使用 for 循环来迭代游标记录 以便可以将它们插入主表中 如何在游标 for 循环内使用合并语句 以便我
  • PL/SQL 中的 BEGIN - END 块原子事务

    这些信息应该很容易找到 但我没有任何运气 当我有一个BEGIN ENDPL SQL 中的块 它是否表现为原子事务 它将尝试在命中时提交END阻止 如果出现问题会回滚更改吗 如果不是 我如何确保 BEGIN END 块内的代码的行为类似于原子
  • 如何将 SELECT...INTO 与 JOIN 一起使用?

    我有以下示例代码 DECLARE myRow table rowtype myVar table2 column type BEGIN SELECT table col1 table col3 table col4 table2 colum
  • PLSQL 中的 REAL 数据类型

    SET SERVEROUTPUT ON DECLARE A REAL 123456789123456789123456789123456789123456789123456789123456789123456789 BEGIN DBMS O
  • 从集合类型 Oracle 12c 插入表 - ORA-00902: 无效数据类型

    我正在使用 Oracle 12 1 我以为我可以查询 12c 中的表类型 当我尝试执行此包时 我收到错误 ORA 00902 无效数据类型 我什至尝试使用强制转换多重集 但仍然出现同样的错误 我知道我们可以在数据库级别创建对象然后查询 但我
  • Oracle PL/SQL 块的语法图是否错误?

    我怀疑 a 的语法图plsql block如中给出的Oracle 数据库 PL SQL 语言参考对于 Release 2 来说是错误的 以供参考 这是当前的链接 http download oracle com docs cd E11882
  • PL/SQL:如何声明会话变量?

    如何在 PL SQL 中声明一个会话变量 该变量仅在会话期间持续存在 而无需将其存储在数据库本身中 您可以使用 用户创建的上下文 来存储会话中多个单元共享的数据 首先 创建一个上下文 CREATE CONTEXT SYS CONTEXT u
  • Oracle PL/SQL - NO_DATA_FOUND 异常是否对存储过程性能不利?

    我正在编写一个需要进行大量调节的存储过程 根据 C NET 编码中的常识 异常会损害性能 因此我也始终避免在 PL SQL 中使用它们 我在此存储过程中的调节主要围绕记录是否存在 我可以通过以下两种方式之一进行 SELECT COUNT I
  • PL/SQL 触发器问题

    我正在尝试编写一个触发器来填充包含员工更新工资信息的表 我现在遇到一个无法解决的问题 这是要填充的表 drop table SalUpdates cascade constraints create table SalUpdates Sal
  • 如何获取Oracle中命名事务的名称?

    我想在触发器中使用事务的名称 以便将其写入列中 我尝试了这个 在 SQL Developer 中 set transaction name hello select DBMS TRANSACTION LOCAL TRANSACTION ID
  • 如何使用 Oracle 移动文本文件

    我有两个问题 1 如何从文件夹中移动文本文件 C Data inbox test txt 目标文件夹 C Data outbox test txt 2 如何获取文件夹中的目录文件列表 C Data inbox 谢谢 Oracle 提供了一个
  • Oracle 存储过程的全局临时表的替代方法

    我已阅读并理解 Oracle 仅使用全局临时表 这与允许 temp 表的 MS SQL 不同 我遇到的情况需要我创建数百个全局临时表 以完成我正在进行的从 MS SQL 到 Oracle 的数据库转换 我想知道除了创建必须在数据库中维护的所
  • 浏览多个字段的值并将它们插入到同一列中

    我正在尝试使用重复行为我的 oracle apex 应用程序创建一个功能 假设我有一个车辆表 CREATE TABLE vehicles brand VARCHAR2 50 model VARCHAR2 50 comment VARCHAR
  • SQL Fiddle 输出错误

    其实我对 PL SQL 还很陌生 我在 SQL Fiddle 中使用 oracle pl sql 创建了下表 create table Employee name varchar2 100 id integer salary integer
  • 版本控制存储过程/PLSQL?

    有没有一种有效的方法来对用 PL SQL 编写的存储过程进行版本控制 我只提到 PL SQL 因为可能存在特定的工具 任何针对存储过程版本控制的答案都是理想的 在我目前的工作中 团队现在使用以下方法对PL SQL进行版本控制 编译PL SQ
  • APEX:从临时表下载 BLOB

    我正在尝试使用 Oracle APEX 4 1 1 构建一个简单的查看应用程序 要显示的信息位于与包含 APEX 应用程序访问的架构的数据库不同的数据库上的表中 使用视图 View 访问此远程表 远程表视图 和数据库链接 视图按预期工作 包

随机推荐