Oracle PL / SQL – DROP函数示例

本文向您展示如何使用DROP FUNCTION从Oracle数据库中删除一个函数。

1. DROP功能示例

1.1创建一个函数get_current_month 。 然后,我们将使用DROP FUNCTION语句删除该函数。

--Creating function

CREATE OR REPLACE FUNCTION get_current_month
RETURN VARCHAR2 IS
curr_month VARCHAR2(10);

BEGIN
  
    SELECT to_char(sysdate, 'MONTH') INTO curr_month FROM dual;
    
    return curr_month;

END get_current_month;

1.2运行它。

select get_current_month() from dual;

-- AUGUST

1.3删除函数get_current_month

DROP FUNCTION GET_CURRENT_MONTH;

-- function GET_CURRENT_MONTH dropped.

1.4再次运行删除的函数get_current_month

select get_current_month() from dual;

-- ORA-00904: "GET_CURRENT_MONTH": invalid identifier
-- 00904. 00000 -  "%s: invalid identifier"

参考文献

  1. DROP功能:-Oracle官方文档

翻译自: https://mkyong.com/oracle/oracle-plsql-drop-function-example/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个 Oracle PL/SQL 的 INSTEAD OF 触发器示例: 假设我们有一个名为 `employees` 的表和一个名为 `employees_log` 的表。我们想要在 `employees` 表上进行一些操作时,自动将相应的日志信息插入到 `employees_log` 表中。我们可以使用 INSTEAD OF 触发器来实现这一点。 首先,我们需要创建一个 `employees_log` 表,用于存储日志信息。可以使用以下 SQL 语句创建这个表: ```sql CREATE TABLE employees_log ( id NUMBER(10) NOT NULL, employee_id NUMBER(10) NOT NULL, action VARCHAR2(100) NOT NULL, log_date DATE NOT NULL ); ``` 然后,我们可以创建一个 INSTEAD OF 触发器来在 `employees` 表上进行操作时,自动将相应的日志信息插入到 `employees_log` 表中。以下是这个触发器的示例代码: ```sql CREATE OR REPLACE TRIGGER employees_trigger INSTEAD OF INSERT OR UPDATE OR DELETE ON employees FOR EACH ROW DECLARE v_action VARCHAR2(100); BEGIN IF INSERTING THEN v_action := 'insert'; INSERT INTO employees_log (id, employee_id, action, log_date) VALUES (employees_log_seq.nextval, :new.id, v_action, SYSDATE); INSERT INTO employees (id, name, salary) VALUES (employees_seq.nextval, :new.name, :new.salary); ELSIF UPDATING THEN v_action := 'update'; INSERT INTO employees_log (id, employee_id, action, log_date) VALUES (employees_log_seq.nextval, :old.id, v_action, SYSDATE); UPDATE employees SET name = :new.name, salary = :new.salary WHERE id = :old.id; ELSIF DELETING THEN v_action := 'delete'; INSERT INTO employees_log (id, employee_id, action, log_date) VALUES (employees_log_seq.nextval, :old.id, v_action, SYSDATE); DELETE FROM employees WHERE id = :old.id; END IF; END; ``` 该触发器被定义为一个 INSTEAD OF 触发器,因此它会在 INSERT、UPDATE 或 DELETE 语句执行之前执行。它还使用了 FOR EACH ROW 子句,以便在每行上执行相应的操作。 在触发器的主体内部,我们使用了 IF-ELSIF 结构来确定正在执行的操作类型,并相应地插入、更新或删除日志信息以及 `employees` 表中的记录。 这就是一个简单的 Oracle PL/SQL INSTEAD OF 触发器示例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值