Oracle数据库 Oracle 子程序
ORACLE 命名的 PL/SQL 块,编译并存储在数据库中。 子程序的各个部分: 声明部分 可执行部分 异常处理部分(可选) 子程序的分类: 过程 - 执行某些操作 函数 - 执行操作并返回值
子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 ORACLE 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全
ORACLE 过程是用于完成特定任务的子程序 例如: 在柜台购买车票 前往售票厅 排队等候 询问关于车票的信息
创建过程的语法: ORACLE CREATE [OR REPLACE] PROCEDURE <procedure name> [(<parameter list>)] IS|AS <local variable declaration> BEGIN <executable statements> [EXCEPTION <exception handlers>] END;
ORACLE CREATE OR REPLACE PROCEDURE find_emp(emp_no NUMBER) AS empname VARCHAR2(20); BEGIN SELECT ename INTO empname FROM EMP WHERE empno = emp_no; DBMS_OUTPUT.PUT_LINE('雇员姓名是 '|| empname); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('雇员编号未找到'); END find_emp;
ORACLE 过程参数的三种模式: IN 用于接受调用程序的值 默认的参数模式 OUT 用于向调用程序返回值 IN OUT 用于接受调用程序的值,并向调用程序返回更新的值
EXECUTE procedure_name(parameters_list); ORACLE 执行过程的语法: EXECUTE procedure_name(parameters_list); SQL> CREATE OR REPLACE PROCEDURE itemdesc(item_code IN VARCHAR2) IS v_itemdesc VARCHAR2(5); BEGIN SELECT itemdesc INTO v_itemdesc FROM itemfile WHERE itemcode = item_code; DBMS_OUTPUT.PUT_LINE(item_code|| '项目的说明为'||v_itemdesc); END; / SQL> SET SERVEROUTPUT ON SQL> EXECUTE itemdesc('i201');
将过程的执行权限授予其他用户: 删除过程: ORACLE 将过程的执行权限授予其他用户: 删除过程: SQL> GRANT EXECUTE ON find_emp TO MARTIN; SQL> GRANT EXECUTE ON swap TO PUBLIC; SQL> DROP PROCEDURE find_emp;