oracle 数库库存储过程,oracle数据库存储过程详解

8eaa2c65ff632ffb03478c49238c9a98.png

存储过程都是放在包下,先看下总建立包的步骤

1。建立包的说明

createor replace package EMPLOYEE_PKG

as

procedure PRINT_ENAME;

end EMPLOYEE_PKG;

2.建立包体

CREATEOR REPLACE PACKAGE BODY employee_pkg as

Procedure print_ename is

Begin

Dbms_output.put_line('ss');

End print_ename;

Endemployee_pkg;

(一)过程的定义:

这些命名的PL/SQL块成为存储过程和函数,他们的集合、称为程序包。

存储过程

· 存储于数据库中的函数,过程是数据库对象。叫存储过程

· 存储过程经编译和优化后存储在数据库服务器中,使用时只要调用即可

我们可以命名我们的PL/SQL块,并为他们确定参数,存储在数据库中。这样可以从任何数据库客户端或者工具引用和运行他们,比如SQL*PLUS, Pro*C, JDBC。

(二)优点:

1. 可重用性:一旦命名并保存在数据库中后,任何应用都可以

2. 抽象和数据隐藏..

3. 可保证数据的安全性和完整性。

4. 存储过程的能力大大增强了SQL语言的功能和灵活

性。存储过程可以用流控语句编写,有很强的灵

活性,可以完成复杂的判断和较复杂的运算。

(三)语法:

CREATE OR REPLACE

PROCEDURE name [ (parameter [,parameter,…] ) ] IS //或AS

[说明:变量定义于此]

BEGIN

执行语句序列

[EXCEPTION

例外处理程序

END [name ];

用户通过create or repalce语句可以建立存储于服务器端的存储过程。存储过程不能用于sql语句。(Procedures cannot be used in SQLstatements;)

Procedure有0或多个参数,参数可是(IN), output (OUT), (IN OUT)

类型.

执行存储过程

set serveroutputon

/

直接执行:

execute my_proc

exec my_proc

(四)过程里要返回一个结果集,.就必须要用到游标了!用游标来处理这个结果集.

PL/SQL游标:

A:分类:

1:隐式游标:非用户明确声明而产生的游标. 你根本看不到cursor这个关键字.

2:显示游标:用户明确通过cursor关键字来声明的游标.

B:什么是隐式游标:

1:什么时候产生:

会在执行任何合法的SQL语句(DML---INSERTUPDATE DELETE DQL-----SELECT)中产生.他不一定存放数据.也有可能存放记录集所影响的行数.

如果执行SELECT语句,这个时候游标会存放数据.如果执行INSERT UPDATE DELETE会存放记录影响的行数.

C:隐式游标叫什么名字:

名字叫sql

关于sql的游标变量到底有哪些呢?

作用:返回最近一次执行SQL语句所涉及的游标相关信息.因为每执行一次SQL语句,都会产生一个隐式游标.那么当前执行的SQL语句就是当前的隐式游标.

sql%found

sql%notfound

sql%rowcount

sql%isopen

ORACLE使用REF游标返回结果集 , REF是一种引用类型,类似于指针。

create or replaceprocedure pro_shuijs(gh in varchar2, RC1 INOUT globalPkg.RCT1) is

begin

OPEN RC1 FOR

select a.zgbhao00 ,a.xming000,GZHJI000+je000000,nvl(SYBXIAN0,0)+nvl(YBAO0000,0)+nvl(YLBXIAN0,0)+nvl(GJJIN000,0) ,

je000000 补充保险,a.sdshui00 税金

from rlvgzsjx2 a ,rltrsdawhxxb,rltdygzlsb c, rlvwcylgj1 d

where a.zgbhao00=c.zgbhao00(+) and

a.zgbhao00=d.zgbhao00(+) and a.nyue0000=d.nyue0000(+) and

a.zgbhao00=b.zgbhao00(+) and a.zgbhao00=gh ;

end pro_shuijs;

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值