oracle基础教程7PPT课件
50页1、专题七 过程、函数和程序包 2021/7/231回顾 游标就是指向上下文区的句柄或指针。 游标有两种类型:显式游标、隐式游标。 四个游标属性 :SQLFOUND、SQLNOTFOUND、SQLROWCOUNT、SQLISOPEN 显式游标的使用步骤 :个 记录变量和%ROWTYPE 带参数的游标 游标FOR循环(循环游标) 游标中的更新和删除 REF游标2021/7/232教学目标 掌握过程的用法 掌握函数的用法 理解过程与函数的相同点和不同点 理解程序包的概念并能熟练应用2021/7/233工作任务 1.用无参过程实现“Hello World!”程序2.用带输入参数的过程向表中插入记录3.用带输出参数的过程查询表中的记录数4.使用带输入输出参数的过程查询记录是否存在5.使用函数查询部门信息6.使用程序包封装过程和函数2021/7/234相关实践知识 从开始菜单中打开SQL*Plus工具,以SCOTT用户的身份登录到数据库 2021/7/235不带参数的过程2-1 输入以下代码,创建一个最简单的过程 功能: 显示”Hello World!”CREATE OR REPLACE PROCE
2、DURE sp_helloWorld ASBEGINDBMS_OUTPUT.PUT_LINE(Hello World!);END sp_helloWorld; 2021/7/236不带参数的过程2-2 执行过程 EXECUTE sp_helloWorld; 执行结果: 删除过程 DROP PROCEDURE sp_helloWorld;2021/7/237带输入参数的过程3-1 实现的功能:向表dept中插入一条记录 创建带输入参数的过程,代码为:2021/7/238带输入参数的过程3-2CREATE OR REPLACE PROCEDURE sp_dept_insert(i_deptno NUMBER,i_dname VARCHAR2,i_loc VARCHAR2)ASBEGIN INSERT INTO dept VALUES(i_deptno,i_dname,i_loc); COMMIT;EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(添加失败!原因为:|SQLERRM); ROLLBACK;END sp_dept_insert; 2
3、021/7/239带输入参数的过程3-3 分别输入两组数据来执行过程 ,结果如下:2021/7/2310带输出参数的过程3-1 实现功能:通过输出参数count来得到dept表中的记录数 创建带输出参数的过程CREATE OR REPLACE PROCEDURE sp_getcount(o_count OUT NUMBER)ASBEGINSELECT COUNT(*) INTO o_count FROM dept;END sp_getcount; 2021/7/2311带输出参数的过程3-2 编写一段匿名的PL/SQL块来执行过程 DECLAREcnt NUMBER;BEGINsp_getcount(cnt);DBMS_OUTPUT.PUT_LINE(dept表中的记录数为: |cnt);END; 2021/7/2312带输出参数的过程3-3 输出结果:2021/7/2313带IN OUT参数的过程2-1 实现功能:查询某个部门名称在表dept中是否已经存在 创建带IN OUT参数的过程,代码为:CREATE OR REPLACE PROCEDURE sp_dept_dname_exi
4、st(io_value IN OUT VARCHAR2)IS l_count NUMBER;BEGIN SELECT COUNT(*) INTO l_count FROM dept WHERE dname=io_value; IF(l_count0) THEN io_value:=存在; ELSE io_value:=不存在; END IF;END sp_dept_dname_exist; 2021/7/2314带IN OUT参数的过程2-2 执行过程: 输出结果: 部门名称ACCOUNTING存在! DECLARE l_iotest varchar2(20):=ACCOUNTING;BEGIN sp_dept_dname_exist(l_iotest); DBMS_OUTPUT.PUT_LINE(部门名称ACCOUNTING|l_iotest|!);END; 2021/7/2315函数4-1 实现功能: 按部门编号查询出表dept中的部门名称 创建一个函数,代码为:2021/7/2316函数4-2 CREATE OR REPLACE FUNCTION f_dept_getname_b
5、yno (i_deptno NUMBER) RETURN VARCHAR2 AS l_dname VARCHAR2(14); BEGIN SELECT dname INTO l_dname FROM dept WHERE deptno=i_deptno; RETURN l_dname; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 错误!该编号的部门不存在!; END f_dept_getname_byno; 2021/7/2317函数4-3 函数的调用及其输出结果 :2021/7/2318函数4-4 删除函数 DROP FUNCTION f_dept_getname_byno; 2021/7/2319过程与函数小结2-1 共同点:两者的实质都是已命名的PL/SQL程序块,即子程序,它们是子程序的两种类型,存储在数据库中,可以从任何数据库客户端和前台应用程序中调用它们。 2021/7/2320过程与函数小结2-2 不同点: 过程函数参数模式可以是IN、OUT或IN OUT参数模式只能是IN模式在语法规范中不包含RETURN子句在语法规范中必须包含RE
《oracle基础教程7PPT课件》由会员日度分享,可在线阅读,更多相关《oracle基础教程7PPT课件》请在金锄头文库上搜索。
2024-05-25 23页
2024-05-25 18页
2024-05-23 21页
2024-05-23 20页
2024-05-23 23页
2024-05-23 36页
2024-05-23 20页
2024-05-23 35页
2024-05-23 24页
2024-05-23 29页