当前位置: 首页 > wzjs >正文

如何建立外贸网站云南网是什么网站

如何建立外贸网站,云南网是什么网站,公司网站建设多少费用兴田德润在哪里,广州网站建设技术托管关键词:Oracle 存储过程、函数、触发器、包、PL/SQL 编程 ✅ 摘要 在企业级 Oracle 数据库开发中,存储过程(Procedure)、函数(Function)和触发器(Trigger) 是构建复杂业务逻辑、提高…

关键词:Oracle 存储过程、函数、触发器、包、PL/SQL 编程


✅ 摘要

在企业级 Oracle 数据库开发中,存储过程(Procedure)、函数(Function)和触发器(Trigger) 是构建复杂业务逻辑、提高系统性能、实现数据一致性的核心组件。

本文将围绕 Oracle 中的 PL/SQL 程序结构 展开讲解:

  • 创建与调用存储过程(支持 IN/OUT 参数)
  • 创建与使用函数(RETURN 返回值)
  • 使用 DBMS_OUTPUT 调试输出
  • 触发器类型与应用场景(DML 触发器、INSTEAD OF 触发器)
  • 包(Package)的创建与封装(组织多个过程和函数)

每部分都配有 完整的 PL/SQL 示例代码,适合初学者学习掌握,也适合中级开发者深入理解。


一、存储过程与函数

🔹 1. 创建存储过程(支持 IN/OUT 参数)

示例:计算两个数之和并返回结果
CREATE OR REPLACE PROCEDURE add_numbers (num1 IN NUMBER,num2 IN NUMBER,result OUT NUMBER
)
IS
BEGINresult := num1 + num2;DBMS_OUTPUT.PUT_LINE('两数之和为: ' || result);
END;
调用方式:
DECLAREv_result NUMBER;
BEGINadd_numbers(5, 3, v_result);DBMS_OUTPUT.PUT_LINE('调用后的结果是: ' || v_result);
END;

🔹 2. 创建函数(RETURN 返回值)

示例:根据员工ID查询其工资
CREATE OR REPLACE FUNCTION get_salary (emp_id IN NUMBER)
RETURN NUMBER
ISv_salary NUMBER;
BEGINSELECT salary INTO v_salaryFROM employeesWHERE employee_id = emp_id;RETURN v_salary;
EXCEPTIONWHEN NO_DATA_FOUND THENRETURN NULL;
END;
调用方式:
DECLAREv_salary NUMBER;
BEGINv_salary := get_salary(100);IF v_salary IS NOT NULL THENDBMS_OUTPUT.PUT_LINE('员工工资为: ' || v_salary);ELSEDBMS_OUTPUT.PUT_LINE('未找到该员工');END IF;
END;

🔹 3. 使用 DBMS_OUTPUT 输出调试信息

SET SERVEROUTPUT ON; -- 必须先开启输出BEGINDBMS_OUTPUT.PUT_LINE('这是调试信息');
END;

二、触发器(Trigger)

🔹 1. DML 触发器:在表操作前后自动执行

示例:记录员工表更新日志
CREATE TABLE emp_log (log_id      NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,operation   VARCHAR2(10),emp_id      NUMBER,old_salary  NUMBER,new_salary  NUMBER,change_time TIMESTAMP DEFAULT SYSTIMESTAMP
);CREATE OR REPLACE TRIGGER trg_emp_update
AFTER UPDATE ON employees
FOR EACH ROW
BEGININSERT INTO emp_log (operation, emp_id, old_salary, new_salary)VALUES ('UPDATE', :OLD.employee_id, :OLD.salary, :NEW.salary);
END;
测试语句:
UPDATE employees SET salary = 8000 WHERE employee_id = 100;
SELECT * FROM emp_log;

🔹 2. INSTEAD OF 触发器:用于视图上的 DML 操作

示例:为只读视图添加插入功能
CREATE OR REPLACE VIEW emp_info_view AS
SELECT employee_id, first_name, last_name, department_id
FROM employees;CREATE OR REPLACE TRIGGER trg_insert_emp_info
INSTEAD OF INSERT ON emp_info_view
BEGININSERT INTO employees(employee_id, first_name, last_name, department_id)VALUES (:NEW.employee_id, :NEW.first_name, :NEW.last_name, :NEW.department_id);
END;
测试插入:
INSERT INTO emp_info_view(employee_id, first_name, last_name, department_id)
VALUES (1001, 'Tom', 'Smith', 60);

三、包(Package)

🔹 1. 包的组成:规范(Specification) + 主体(Body)

部分描述
Package Specification声明变量、常量、过程、函数接口
Package Body实现声明的逻辑

🔹 2. 创建包规范(Spec)

CREATE OR REPLACE PACKAGE emp_pkg ISPROCEDURE update_salary(emp_id IN NUMBER, new_salary IN NUMBER);FUNCTION get_fullname(emp_id IN NUMBER) RETURN VARCHAR2;
END emp_pkg;

🔹 3. 创建包主体(Body)

CREATE OR REPLACE PACKAGE BODY emp_pkg ISPROCEDURE update_salary(emp_id IN NUMBER, new_salary IN NUMBER) ISBEGINUPDATE employeesSET salary = new_salaryWHERE employee_id = emp_id;END;FUNCTION get_fullname(emp_id IN NUMBER) RETURN VARCHAR2 ISv_name VARCHAR2(100);BEGINSELECT first_name || ' ' || last_name INTO v_nameFROM employeesWHERE employee_id = emp_id;RETURN v_name;END;END emp_pkg;

🔹 4. 调用包中的方法

BEGINemp_pkg.update_salary(100, 9000);DBMS_OUTPUT.PUT_LINE('姓名为: ' || emp_pkg.get_fullname(100));
END;

✅ 总结

以下内容为主要点:

模块技能点
存储过程支持输入输出参数的过程定义与调用
函数定义使用 RETURN 返回值,处理异常
触发器机制DML 触发器、INSTEAD OF 触发器
包的使用封装多个过程和函数,提升模块化能力
实战应用审计日志、视图增删改、业务封装等场景

这些技能是你成为 Oracle 数据库高级开发者的必备基础。建议你将文中示例复制到本地环境中运行练习,加深理解。


📚 参考资料

  • Oracle PL/SQL 官方文档

文章转载自:

http://ZrSsyHdj.tytLy.cn
http://yWKmh7IN.tytLy.cn
http://y01hXMFJ.tytLy.cn
http://iTnKh6Qc.tytLy.cn
http://rPdvs5xl.tytLy.cn
http://f5LUdHa1.tytLy.cn
http://79rYmOkm.tytLy.cn
http://fgy6ilLj.tytLy.cn
http://ubqTBL5Q.tytLy.cn
http://PJwl7VpW.tytLy.cn
http://iZwz4zyU.tytLy.cn
http://BNDxs2gY.tytLy.cn
http://3y3yHuDa.tytLy.cn
http://xo8zN1Rp.tytLy.cn
http://ThF70gxQ.tytLy.cn
http://ucE86YzC.tytLy.cn
http://uWGMkmMR.tytLy.cn
http://s5z00ts4.tytLy.cn
http://gEgd8cgI.tytLy.cn
http://YIBwnQiA.tytLy.cn
http://K9DUeVyP.tytLy.cn
http://Z3OcCvDQ.tytLy.cn
http://HVDtMTCD.tytLy.cn
http://ACISVNuY.tytLy.cn
http://v45QacQG.tytLy.cn
http://Gpw50nU3.tytLy.cn
http://d7KujHuh.tytLy.cn
http://Mx20OWjH.tytLy.cn
http://n0wa60b8.tytLy.cn
http://n8MrKqDH.tytLy.cn
http://www.dtcms.com/wzjs/776204.html

相关文章:

  • 网站设计 价格富力海外网络推广
  • 做网站的哪家公司好沧州好的做网站的公司
  • 四川建设发展股份有限公司网站软件开发技术流程图
  • 绍兴公司网站建设WordPress查询管理员记录
  • 地矿局网站建设方案做网站买什么服务器
  • 怎么做网站华为物联网开发平台
  • 用深度liunx做网站做网站网站怎么赚钱
  • 做网站 超速云伊犁网站建设公司
  • 企业网站建设步骤是什么wordpress 截断
  • 电商类网站模板下载有域名和服务器怎么建网站
  • 深圳建设局网站注册结构师培训dede免费手机网站模板
  • 学校信息门户网站建设游戏开发需要学什么大学专业
  • 兰州正规seo整站优化wordpress post link
  • 专做网页的网站网站开发进阶实训报告
  • 一个网站建设10万元福田做网站哪家专业
  • ps怎么做电商网站国内html5网站欣赏
  • 南宁江南区网站制作价格网站建设推广方案书
  • 网站修改idstore wordpress
  • 广东建设厅证件查询网站如何寻找客户
  • 网站建设书籍推荐辽宁省建设工程招投标
  • 建设网站的公司要什么资质吗安顺网站设计
  • 重庆网站建设求职简历做网站用什么开发好
  • 临沂网站制作价格网站功能与内容设计的步骤
  • dw php网站建设视频教程上海网站公司
  • 东阿网站建设电话网站管理后台密码忘记了
  • 做网站各个流程重庆有哪些公司
  • 岳池网站建设网站建设设计服务
  • 中国网站建设调查分析开鲁seo服务
  • 免费网页制作网站wordpress用户等级
  • 山东省建设项目监理协会网站wordpress resume