- 浏览: 406741 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (158)
- SpringBoot (10)
- vue.js (4)
- 2017基础知识 (2)
- jquery (4)
- extjs (8)
- spring (13)
- Java基础 (24)
- ibatis (2)
- oracle (18)
- 服务器配置 (8)
- maven (7)
- web应用开发 (14)
- 数据库 (9)
- 第三方依赖 (3)
- 百味人生 (7)
- svn (1)
- 问题一堆 (2)
- 测试驱动开发 (1)
- webServices (2)
- 网络编程 (2)
- 其它 (4)
- hibernate (2)
- ec标签序号列 (1)
- javascript (1)
- ActiveMQ (2)
- linux (5)
- UI (1)
- 问题汇集 (1)
- redis (1)
最新评论
-
jackson200:
讲解的狠不错!谢谢!
spring注入原理 -
阳光泛滥的日子:
讲的很透彻,受教了 。
spring中注解的实现原理 -
liudechao9:
最近在研究这方面,很不错,但是多线程并发的时候可能会出问题,而 ...
spring中注解的实现原理 -
小帅1127:
厉害啊 我的哥
spring中注解的实现原理 -
phoenixpaul:
...
Oracle存储过程和程序包
一、为什么要用存储过程?
如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程。通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能。
二、过程的优点?
1、预编译:存储过程预先编译好放在数据库内,减少编译语句所花的时间。
2、缓存:预编译的存储过程会进入缓存,所以对于经常执行的存储过程,除了第一次执行外,其它次数的执行速度会明显提高。
3、减少网络传输:特别是对于一些处理数据的存储过程,不必像直接使用SQL语句那样多次传送数据到客户端。
4 、可维护性高:更新存储过程通常要比更改、测试和部署应用程序需要的时间和精力要少。
5、代码的重用:一个可以重用的存储过程可以应用到应用程序的多个位置。
6、增强安全性:通过对用户授权对存储过程的访问权限,它们可以提供对特定数据的访问;提高数据安全性,来防止SQL注入。
三、缺点:
1、如果需要对存储过程的输入输出参数做更改的话,还要更改程序。
2、可移植性差:因为存储过程将应用程序的业务处理绑定到数据库中,以此使用存储过程来处理业务逻辑限制了应用程序的可移植性。
四、创建存储过程
--1、简单的存储过程 create or replace procedure procedure_test (p_id in varchar,p_status out varchar) --p_id为输入参数 ,p_status为输出参数 as t_name varchar2(20); t_count number:=0; begin select votetitle,vatesum into t_name,t_count from votemaster where id=p_id; --注意:此处没有:来赋值 if t_count <=0 then p_status:= t_name||':差'; elsif t_count >0 and t_count <3 then p_status:= t_name||':良好'; else p_status:= t_name||':优秀'; end if; end; --执行 declare out_param varchar2(50); begin procedure_test('1',out_param); dbms_output.put_line(out_param); end; --2、带游标的存储过程 create or replace procedure procedure_cursor_test (p_id in varchar2,p_status out varchar2) as vote votemaster%rowtype; --声明一个对象(votemaster)类型的对象 cursor my_cur is select * from votemaster; --声明一个游标并填充数据 begin open my_cur; --打开游标 loop fetch my_cur into vote ; --循环游标,并放入对象 exit when my_cur%notfound; --如果没有数据,则直接exit if vote.id=p_id then p_status := vote.votetitle||':'||vote.vatesum; --如果想终止循环,可以直接exit; end if; end loop; close my_cur; --关闭游标 end; --执行 declare out_param varchar2(50); begin procedure_cursor_test('1',out_param); dbms_output.put_line(out_param); end;
五、程序包
1、程序包:包是一组相关过程、函数、变量、游标、常量等PL/SQL程序设计元素的组合。它具有面向对象程序设计语言的特点,是对这些PL/SQL程序设计元素的封装。包类似于C++或Java程序中的类,而变量相当于类中的成员变量,过程和函数相当于方法,把相关的模块归类成为包,可使开发人员利用面向对象的方法进行存储过程的开发,从而提高系统性能。与类相同,包中的程序元素也分为公用元素和私有元素两种,这两种元素的区别是他们允许访问的程序范围不同,即他们的作用域不同。公用元素不仅可以被包中的函数、过程调用,也可以被包外的PL/SQl块调用。而私有元素只能被该包内部的函数或过程调用。
2、使用程序包的优点:在PL/SQL设计中,使用包不仅可以使程序模块化,对外隐藏包内所使用的信息,而写程序包可以提高程序的运行效率。因为,当程序首次调用程序包内部的函数或过程时,Oracle将整个程序包调入内存,当再次调用程序包中的元素时,Oracle直接从内存中读取,而不需要进行磁盘的IO操作,从而使程序的执行效率提高。
3、一个程序包分为两部分组成:
(1)、包定义:包定义部分声明包内数据类型、变量、常量、游标、子程序和函数等元素,这些元素为包的共有元素。
(2)、包主体:包主题则定义了包定义部分的具体实现,在包主体中还可以声明和实现私有元素。
--包定义 create or replace package t_package is --定义过程 procedure append_proc(t varchar2,a out varchar2); --过程的重载 procedure append_proc(t number,a out varchar2); --定义函数 function append_fun(t varchar2) return varchar2; end;
--包主题 create or replace package body t_package is v_t varchar2(30); --私有成员函数 function private_fun(t varchar2) return varchar2 is begin v_t := t||'hello'; return v_t; end; --实现过程 procedure append_proc(t varchar2,a out varchar2) is begin a := t||'hello'; end; --过程的重载 procedure append_proc(t number,a out varchar2) is begin a := t||'hello'; end; --实现函数 function append_fun(t varchar2) return varchar2 is begin v_t := t||'hello'; return v_t; end; end;
发表评论
-
linux下操作oracle
2017-12-14 13:26 410进入 : su - oracle ... -
oracle 用户被锁定解锁方法
2017-10-09 08:57 339修改了用户密码,第二天过来发现用户被锁定,晚上走的时候还好好 ... -
mysql、oracle定时备份
2012-11-03 10:26 11701、oracle定时备份 @echo off set NL ... -
ORACLE数据库的体系结构
2011-08-16 11:33 1412一、Oracle服务器是由Orac ... -
数据库中的事务
2011-08-15 15:30 988一、事务(Transaction)是由 ... -
Oracle游标
2011-08-10 15:23 1702一、什么是游标? PL/SQ ... -
Oracle子查询
2011-08-09 10:56 12941、子查询in 、any 、all select * fro ... -
Oracle连接查询
2011-08-09 10:53 10021、内连接 /* 内连接 返回满足条件的记录,其中inn ... -
Oracle中DBLink、同义词、DDL语句、序列
2011-08-09 10:47 20061、创建database link create datab ... -
Oracle触发器
2011-08-05 14:16 31741、触发器的定义? 触发器是在触发一定事件的时候隐式执行 ... -
oracle存储过程、游标、函数
2010-12-01 10:41 1321、长时间没有写过oracle过程、函数之类的东东了,最近比较 ... -
oracle主键自增触发器
2010-11-05 10:01 1344CREATE OR REPLACE TRIGGER mycol ... -
oracle 索引
2010-11-05 09:32 1416当索引键列用户SQL语句的where子句中时,该索引将直接指向 ... -
oracle 函数
2010-11-02 09:12 1065/************************判断null ... -
Oracle汉字排序SQL
2010-11-01 14:06 14431、使用拼音排序 select * from t o ... -
oracle删除重复记录
2010-04-07 15:18 917删除表中多余的重复记录,重复记录是根据单个字段(peopleI ... -
oracle分页查询
2010-04-07 15:17 979SELECT b.* FROM ( SELECT RO ... -
oracle创建表空间
2010-04-07 15:16 1783//创建临时表空间 create temporary ...
相关推荐
Oracle存储过程及程序包的一点小结与案例,通过对一些代码的分许来学习
oracle存储过程函数程序包课件ppt,你可以自学oracle存储过程!
oracle存储过程函数和程序包.ppt
oracle子程序和程序包(主要对oracle存储过程和函数作了讲解),里面有详细的例子。
oracle存储过程、函数和程序包.pptx
如果你是临时抱佛脚的,这个资源完全适合你去实践: 1 PLSQL 程序设计简介 2 PLSQL块结构和组成元素 3 PLSQL流程控制语句 4 游标 5 异常处理 6 过程与函数 ...7 程序包的创建和应用 8 触发器
vb中调用oracle存储过程,及有一个存储过程实例
oracle建包,包内有存储过程实现分页,里边包含游标,通过游标实现。
写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,指定每页显示多少行,调用成功后,会返回页数,行数,还有查询的结果数据集。 使用...
项目中的存储过程程序包,方便自己以后学习使用
使用VB调用Oracle程序包内的存储过程返回结果集 使用VB调用Oracle程序包内的存储过程返回结果集
可以有无参数程序和带参数存储过程。 无参程序语法 1 create or replace procedure NoParPro 2 as ; 3 begin 4 ; 5 exception 6 ; 7 end; 8 带参存储过程实例 1 create or replace procedure ...
oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL...
包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块
Oracle9i PL/SQL程序设计,存储过程、包、数据库触发器设计,内容比较简单