首页 > 数据库 > ORACLE存储过程从零到入门

ORACLE存储过程从零到入门

2011年5月20日 3,155 views

1.以下所说为oracle存储过程!

2.注重存储过程的编写、调试、和运用的流程,不注重太多语法的介绍!

3.只要你懂sql语句就可以继续往下看了!

4.一个存储过程不是属于哪个table的,而是属于一个用户的(在oracle来说)。

5.现在可以编写存储过程了,如果你是一个oralce新手应该也知道plsql这个东西。

在plsql里新建一个 sql window,在这里写存储过程的语句。

一个最简单的存储过程

create or replace procedure test is
begin
null;
end test;
/

解释:

create 创建;

replace 如果存在则替换;

procedure 告诉数据库你要创建或替换的是一个存储过程;

test 你创建的存储过程的名字;

begin 固定的,表示要开始写了;

null oracle规定begin和end之间至少有一句话;

end test 表示存储过程结束,test是对应上面你创建的存储过程名字,注意该写分号的地方要写分号;

/ 这个是可以不写的,但还是写的好,下面会告诉你它是干啥用的。

6.恭喜你,你已经会写存储过程了。那么这个存储过程该怎么生效呢?

好,请选中上面5行语句,按执行(F8);好了,在左边objects窗口下有个Procedures文件夹,打开就可以看到有你写的存储过程test。

这表示数据库已经有你的存储过程,你可以调用这个存储过程了。

7.现在存储过程还只是挂在数据库上,如果不被执行(与F8的执行不是一个意思)或者不被调用,那它只是垃圾。

所以,现在你要知道如何执行存储过程了。

请先把上面的5行语句存为一个sql文件,如:test.sql。

打开命令行(运行 cmd)cd到test.sql所在的文件目录;

输入sqlplus name/password@orcl;这是进入sqlplus的命令,如果你不懂是啥意思,请去google。

好,如果你进来了,应该是看到sql>;

恩,可以开始了。输入:@test。(命令不包括:和。其中test是test.sql的文件名)。

还记得上面5行语句的最后一行有个 / 吗?如果没有这个 / 那么现在你应该再输入一个 / 才能完成这个执行文件的命令。

如果提示成功,ok,继续!

再输入一条命令:execute test。(命令不包括:和。其中execute就是执行存储过程了,执行的意思就是说,如果你存储过程里有一个insert语句,那只有execute才是在执行插入操作,而且前面的什么F8、@test之类的都不是。test是你创建的存储过程的名字)。

如果提示成功了,ok,结束。

8.上面就是编写、运行、执行存储过程的流程了。

当然,上面5句话,也太简单了些,因为没有输出,可能你都没有hello world的感觉,好,下面就来一个hello world级别的存储过程!

create or replace procedure test is
begin
dbms_output.put_line('abc');
end test;
/

上面即是一个hello world级别的存储过程了。

–按F8;

–打开sqlplus

–set serveroutput on(如果想输出内容,要这一句!)

–@test

–execute test

如果正常的话,你会看到输出abc。

9.好了,hello world到此结束了。下面再随便说两句。

+1+上面例子中甚至连变量都没有,当然更没有什么循环、数组之类的,但是我想如果你明白了这个流程,其他的都只是添砖加瓦的事。

+2+存储过程是可以传参数的,参数只能是in和out两种类型,一个参数至少要是in或out其中一种,当然也可以两种都是。具体语法、用法请去google。

+3+如果你执行了存储过程后,发现你存储过程中的insert或update或delete没有生效,甚至发现数据库被锁死了,那你要知道存储过程里增删改后要有commit;这个语句。

+4+如果你在sqlplus里执行存储过程,想传入一个out型参数,要先var 一个变量,然后用法如:execute test(para_in,:para_out)。(para_in,para_out只是两个随意参数名,注意para_out前面有冒号)

+5+不一定要在sqlplus里execute存储过程,其实plsql当然也可以,打开command window在里面execute就ok了,而且是不用@test的。在sqlplus里修改了文件后要重新执行@test后才能执行execute。

到此结束,不罗嗦了,编程愉快!

分类: 数据库 标签: ,
  1. 本文目前尚无任何评论.