讲讲最近
离上一次发文大概有两周啦,先讲一下为什么没有发文吧。第一个原因是最近有一些忙,因为周一周三要兼职,然后实验室的师兄又布置了新的任务,所以每天都很忙,然后周六周日更不愿意出来学习了。有时候会觉得很累,但是想起大三,其实不算什么,我很开心自己可以这么忙碌,这么充实,不然以我的个性一定是睡觉,玩手机,吃饭三部曲。忙一点未尝不好。那之后讲一下自己在实验室忙什么,最近在做数据库的编程,编得时候很神奇,因为我想数据库就是简单的sql语句,现在感觉好神奇。那就来说一下自己的理解吧。(所有的程序都是针对Oracle数据库操作的)
存储过程开始讲起
存储过程的结构
create or replace procedure 存储过程名(参数) is/as\
变量块(像sql语句建表一样,一个变量声明用;结束)
begin
开始写程序块
commit;
异常处理块
end 存储过程名;
详细的解释如下:
创建语句:create or replace procedure 存储过程名
如果没有or replace语句,则仅仅是新建一个存储过程。如果系统存在该存储过程,则会报错。Create or replace procedure 如果系统中没有此存储过程就新建一个,如果系统中有此存储过程则把原来删除掉,重新创建一个存储过程。存储过程名定义:包括存储过程名和参数列表。参数名和参数类型。参数名不能重复, 参数传递方式:IN, OUT, IN OUT
IN 表示输入参数,按值传递方式。
OUT 表示输出参数,可以理解为按引用传递方式。可以作为存储过程的输出结果,供外部调用者使用。
IN OUT 即可作输入参数,也可作输出参数。
参数的数据类型只需要指明类型名即可,不需要指定宽度。
参数的宽度由外部调用者决定。
过程可以有参数,也可以没有参数变量声明块:紧跟着的as (is )关键字,可以理解为pl/sql的declare关键字,用于声明变量。
变量声明块用于声明该存储过程需要用到的变量,它的作用域为该存储过程。另外这里声明的变量必须指定宽度。遵循PL/SQL的变量声明规范。
过程语句块:从begin 关键字开始为过程的语句块。存储过程的具体逻辑在这里来实现。异常处理块:关键字为exception ,为处理语句产生的异常。该部分为可选
结束块:由end关键字结果。
参数
参数的传递方式
-
存储过程的参数传递有三种方式:IN,OUT,IN OUT 。
IN 按值传递,并且它不允许在存储过程中被重新赋值。如果存储过程的参数没有指定存参数传递类型,默认为IN -
OUT 参数:作为输出参数,需要注意,当一个参数被指定为OUT类型时,就算在调用存储过程之前对该参数进行了赋值,在存储过程中该参数的值仍然是null。
-
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
本文分享了作者在实验室忙碌的生活,重点介绍了近期学习的Oracle数据库编程经验,详细讲解了存储过程的创建、参数传递方式及异常处理等核心概念。
199

被折叠的 条评论
为什么被折叠?



