oracle存储过程1

本文分享了作者在实验室忙碌的生活,重点介绍了近期学习的Oracle数据库编程经验,详细讲解了存储过程的创建、参数传递方式及异常处理等核心概念。

讲讲最近

离上一次发文大概有两周啦,先讲一下为什么没有发文吧。第一个原因是最近有一些忙,因为周一周三要兼职,然后实验室的师兄又布置了新的任务,所以每天都很忙,然后周六周日更不愿意出来学习了。有时候会觉得很累,但是想起大三,其实不算什么,我很开心自己可以这么忙碌,这么充实,不然以我的个性一定是睡觉,玩手机,吃饭三部曲。忙一点未尝不好。那之后讲一下自己在实验室忙什么,最近在做数据库的编程,编得时候很神奇,因为我想数据库就是简单的sql语句,现在感觉好神奇。那就来说一下自己的理解吧。(所有的程序都是针对Oracle数据库操作的)

存储过程开始讲起

存储过程的结构

create or replace procedure 存储过程名(参数)  is/as\
变量块(像sql语句建表一样,一个变量声明用;结束)
begin
开始写程序块
commit;
异常处理块
end 存储过程名;
详细的解释如下:

  1. 创建语句:create or replace procedure 存储过程名 
    如果没有or replace语句,则仅仅是新建一个存储过程。如果系统存在该存储过程,则会报错。Create or replace procedure 如果系统中没有此存储过程就新建一个,如果系统中有此存储过程则把原来删除掉,重新创建一个存储过程。

  2.  存储过程名定义:包括存储过程名和参数列表。参数名和参数类型。参数名不能重复, 参数传递方式:IN, OUT, IN OUT 
    IN 表示输入参数,按值传递方式。 
    OUT 表示输出参数,可以理解为按引用传递方式。可以作为存储过程的输出结果,供外部调用者使用。 
    IN OUT 即可作输入参数,也可作输出参数。 
    参数的数据类型只需要指明类型名即可,不需要指定宽度。 
    参数的宽度由外部调用者决定。 
    过程可以有参数,也可以没有参数 

  3. 变量声明块:紧跟着的as (is )关键字,可以理解为pl/sql的declare关键字,用于声明变量。 
    变量声明块用于声明该存储过程需要用到的变量,它的作用域为该存储过程。另外这里声明的变量必须指定宽度。遵循PL/SQL的变量声明规范。 
    过程语句块:从begin 关键字开始为过程的语句块。存储过程的具体逻辑在这里来实现。 

  4. 异常处理块:关键字为exception ,为处理语句产生的异常。该部分为可选

  5. 结束块:由end关键字结果。 

参数

参数的传递方式

 

  1. 存储过程的参数传递有三种方式:IN,OUT,IN OUT 。
    IN 按值传递,并且它不允许在存储过程中被重新赋值。如果存储过程的参数没有指定存参数传递类型,默认为IN 

  2. OUT 参数:作为输出参数,需要注意,当一个参数被指定为OUT类型时,就算在调用存储过程之前对该参数进行了赋值,在存储过程中该参数的值仍然是null。

  3. IN OUT 是真正的按引用传递参数。即可作为传入参数也可以作为传出参数。

这里的黄色部分是输出,选中部分是输入的

 

参数的宽度

对于IN参数,其宽度是由外部决定。 
对于OUT 和IN OUT 参数,其宽度是由存储过程内部决定。

参数的默认值

可以通过default 关键字为存储过程的参数指定默认值。在对存储过程调用时,就可以省略默认值。 
需要注意的是:默认值仅仅支持IN传输类型的参数。OUT 和 IN OUT不能指定默认值 

两个参数之间用逗号隔开。

变量的声明在begin之前,用;隔开多个变量,变量以及参数的赋值用v_dd :='111';,在程序块。

 

最后剩下的下次讲啦。Oracle编程还有好多需要学习的,慢慢学习!这次主要是参考这个网址的,下次认真做啦。

参考:http://www.cnblogs.com/chinafine/archive/2010/07/12/1776102.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值