当前位置:文档之家› Oracle中PLSQL程序设计概念

Oracle中PLSQL程序设计概念

❖描述 PL/SQL 基本 ❖列出从 SQL 表达式调用函数的限制 ❖PL/SQL 包的回顾 ❖识别显式光标的处理 ❖处理异常 ❖管理依赖关系 ❖使用Oracle系统支持的内置包
PL/SQL 块结构
DECLARE BEGIN
EXCEPTION
END;
匿名(Anonymous) PL/SQL 块
<header> IS|AS BEGIN EXCEPTION END;
执行函数的方法
❖在 PL/SQL 表达式部分来调用
❖使用宿主变量来获得函数的结果:
VARIABLE v_credit NUMBER EXECUT01)
❖使用本地变量获得函数的结果: DECLARE v_credit customers.credit_limit%type; BEGIN
❖在 SQL 语句调用函数时 : ❖参数必须指定到合理位置 ❖你必须是函数的主人 或者具有 EXECUTE 权限
从 SQL 调用函数的限制
❖函数调用: ❖一个SELECT 语句不能包含 DML 语句 ❖在表T上的一个UPDATE 或 DELETE语句不能 查询操作或 在同一表里不能包含 DML 语句 ❖SQL 语句不能结束事务 (不能执行 COMMIT 或 ROLLBACK)
BEGIN SELECT credit_limit INTO v_credit FROM customers WHERE customer_id = v_id; RETURN (v_credit);
END get_credit; /
❖以表达式或参数来调用函数:
EXECUTE dbms_output.put_line(get_credit(101))
Oracle中PL/SQL 程序 设计概念
课程目标
❖完成本课程, 你应该学会做下面的工作:
❖描述 PL/SQL 基本 ❖列出从SQL调用函数的限制 ❖识别显式光标如何处理 ❖处理异常 ❖使用 raise_application_error过程 ❖管理依赖关系 ❖使用 Oracle 支持的内置包
课程导向
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter1 [mode] datatype1, parameter2 [mode] datatype2, ...)]
IS|AS [local_variable_declarations; …]
BEGIN -- actions;
课程导向
❖描述 PL/SQL 基本 ❖列出从 SQL 表达式调用函数的限制 ❖PL/SQL 包的回顾 ❖识别显式光标的处理 ❖处理异常 ❖管理依赖关系 ❖使用Oracle系统支持的内置包
v_credit := get_credit(101); ... END;
❖采用参数传递给另外子程序方式来调用:
EXECUTE dbms_output.put_line(get_credit(101))
❖使用 SQL 语句 :
SELECT get_credit(customer_id) FROM customers;
存储程序部件
命名惯例
❖合适的命名惯例有下面好处:
❖容易阅读 ❖容易理解 ❖给出的信息具有广泛性 ❖容易调试 ❖确保一贯性 ❖可改善性能
存储过程(Procedures)
❖一个存储过程是:
❖可执行一系列动作的和返回一个或多个值的有名称的 PL/SQL块
❖以模式对象 (schema object)方式存储在数据库里 ❖用于改善重用性和可维护性
END [procedure_name];
存储过程: 样例
CREATE OR REPLACE PROCEDURE get_avg_order (p_cust_id NUMBER, p_cust_last_name VARCHAR2, p_order_tot NUMBER) IS
v_cust_ID customers.customer_id%type; v_cust_name customers.cust_last_name%type; v_avg_order NUMBER; BEGIN SELECT customers.customer_id, customers.cust_last_name, AVG(orders.order_total) INTO v_cust_id, v_cust_name, v_avg_order FROM CUSTOMERS, ORDERS WHERE customers.customer_id=orders.customer_id GROUP BY customers.customer_id, customers.cust_last_name; END; /
RETURN datatype IS|AS [local_variable_declarations; …]
BEGIN -- actions; RETURN expression;
END [function_name];
函数: 样例
❖创建函数:
CREATE OR REPLACE FUNCTION get_credit (v_id customers.customer_id%TYPE) RETURN NUMBER IS v_credit customers.credit_limit%TYPE := 0;
函数(Functions)
❖一个函数是:
❖必须返回一个值的命名的 PL/SQL 块 ❖以模式对象存储在数据库里 ❖他作为表达式的一部分或提供一个参数值来调用
CREATE [OR REPLACE] FUNCTION function_name [(parameter1 [mode1] datatype1, ...)]
课程导向
❖描述 PL/SQL 基本 ❖列出从 SQL 表达式调用函数的限制 ❖PL/SQL 包的回顾 ❖识别显式光标的处理 ❖处理异常 ❖管理依赖关系 ❖使用Oracle系统支持的内置包
从 SQL 调用函数的限制
❖用户定义的函数,只能从 SQL 表达式来调用: ❖必须存储在数据库里 ❖用 SQL 数据类型接受输入参数, 不能在PL/SQL指定 的类型 ❖返回的是 SQL 数据类型, 不是 PL/SQL指定的类型
相关主题