电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

oracle基础教程7PPT课件

50页
  • 卖家[上传人]:日度
  • 文档编号:213772742
  • 上传时间:2021-11-22
  • 文档格式:PPT
  • 文档大小:260KB
  • / 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

      6、TURN子句在可执行语句部分可以有RETURN语句,但其后不能加任何表达式在可执行语句部分至少应该包含一条RETURN expression语句可以用EXECUTE语句来执行不能用EXECUTE语句来执行2021/7/2321程序包5-1 利用程序包封装过程sp_dept_insert和函数f_dept_getname_byno 程序包规范部分的代码:CREATE OR REPLACE PACKAGE pkg_deptASPROCEDURE sp_dept_insert(i_deptno NUMBER,i_dname VARCHAR2,i_loc VARCHAR2);FUNCTION f_dept_getname_byno(i_deptno NUMBER) RETURN VARCHAR2;END pkg_dept; 2021/7/2322程序包5-2 程序包主体部分的代码 CREATE OR REPLACE PACKAGE BODY pkg_dept AS -过程sp_dept_insert PROCEDURE sp_dept_insert (i_deptno NUMBER,i_dna

      7、me VARCHAR2,i_loc VARCHAR2) AS BEGIN 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;2021/7/2323程序包5-3 -函数f_num_range FUNCTION f_dept_getname_byno(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;END pkg_dept; 2021/7/2324程序包

      8、5-4 执行程序包中的过程和函数:2021/7/2325程序包5-5 删除程序包: 只删除程序包主体: DROP PACKAGE BODY pkg_dept; 删除整个程序包(规范+主体): DROP PACKAGE pkg_dept;2021/7/2326小结:程序包的优点 使用程序包的优点: 信息隐藏 模块化 对多态的支持 性能更佳2021/7/2327过程返回结果集2-1 在Oracle中的过程不能象SQL SERVER那样直接返回结果集,而必须借助于REF游标 程序包规范中的代码:lCREATE OR REPLACE PACKAGE pkg_deptlASl TYPE deptcursor IS REF CURSOR;l PROCEDURE sp_dept_getall( dept_cur OUT deptcursor);lEND pkg_dept; 2021/7/2328过程返回结果集2-2 程序包主体中的代码: 执行过程:CREATE OR REPLACE PACKAGE BODY pkg_deptAS PROCEDURE sp_dept_getall(dept_cur O

      9、UT deptcursor) IS BEGINOPEN dept_cur FOR SELECT * FROM dept; END sp_dept_getall;END pkg_dept; lVARIABLE test_cur REFCURSOR;lEXECUTE pkg_dept.sp_dept_getall(:test_cur); lPRINT test_cur; 2021/7/2329查看 查看过程、函数的信息 SELECT object_name,procedure_name FROM USER_PROCEDURES; 查看过程、函数的源代码 SELECT line,text FROM USER_SOURCE WHERE name=;2021/7/2330OEM中管理过程、函数、程序包 请老师用浏览器打开OEM,演示在OEM中管理过程、函数、程序包2021/7/2331总结 过程和函数都是命名的PL/SQL程序块,合称子程序 过程有三种参数模式:IN、OUT和IN OUT 过程用户执行特定的任务,函数用于执行任务并返回值 过程与函数的相同点和不同点 程序包是对过程、函数、变量、常

      10、量、游标、异常及PL/SQL数据类型等的封装 程序包由两部分组成,即包规范和包主体 使用程序包的优点2021/7/2332过程的定义 定义: 过程是一组为了完成特定功能的、符合数据库程序脚本规范的程序,经编译后存储在数据库中,然后由一个应用程序或其他的PL/SQL程序调用。从根本上讲,过程就是命名的PL/SQL程序块。 2021/7/2333创建过程的语法CREATE OR REPLACE PROCEDURE procedure_name(parameter_list)AS|ISlocal_declarationsBEGINexecutable_statementsEXCEPTIONexception_handlersEND procedure_name; 2021/7/2334执行过程 在SQL提示符下 : EXECUTE procedure_name(parameters_list) 在其它的过程、函数或匿名的PL/SQL块中的可执行语句部分执行过程,直接写过程的名称(如有参数需带上)即可 2021/7/2335删除过程 删除过程的语法: DROP PROCEDURE proced

      《oracle基础教程7PPT课件》由会员日度分享,可在线阅读,更多相关《oracle基础教程7PPT课件》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.