ITPub博客

首页 > 数据库 > MySQL > ORACLE存储过程helloworld

ORACLE存储过程helloworld

MySQL 作者:bachqin 时间:2014-03-13 09:17:17 0 删除 编辑

Into the procedure

What is stored procedure

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

Advantages of procedure

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
 2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
  3.存储过程可以重复使用,可减少数据库开发人员的工作量。
  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

Hello world

pl/sql图形化窗口进行oracle开发时首先需要区分命令窗口(command window)和sql窗口(sql window)

如果我们想通过命令(包括sql命令)进行一些操作如:创建存储过程,执行存储过程等请使用command window,类似在sqlplus中进行操作。

如果我们仅仅对基本的sql进行操作如查询表,表数据操作时使用sql window就可以了。

此处我们需要创建存储过程,步骤如下:

准备:新建一个表lgtable并在pl/sql选择file新建窗口选择command window

输入代码:

create or replace procedure pro_3 is

  begin

  insert into lgtable values(xxxxx);

  commit;

  dbms_output.put_line('hello world!');

  end pro_3;

注意:

1.如果我们对命令行操作表熟悉的话知道回车就可以了,但是此处不是执行一条sql语句,需要在语句最末端加上“/”然后回车该命令段就会被执行。

2.如果对命令行执行不熟悉可以通过fileprogram window下新建一个procedure编辑窗口直接将代码粘贴进行,点击左上方的“齿轮”图标,执行以上程序完成以上创建过程。

执行以上创建的存储过程,此处需要在命令窗口中进行:

exec  pro_3;

以上的程序执行后发现没有打印出“hello world!”请在exec pro_3之前加上set serveroutput on;重新执行一次程序执行成功后打印了提示信息。

Hello word解析

第一行:创建存储过程命令,此处关键字is也可以换为as

第二行:begin存储过程执行体的开始标识

第三行-第五行:存储体

这里体现了oracle的几个特征

1.通过insert into进行插入数据时每次只能单记录插入(sqlservermysql可以通过“,”分割多条插入)。

2.Oracle在执行每一个事务的后需要进行提交commit,否则操作无效(sqlservermysql中无此操作便可生效),如果执行过程中出现异常将会roll back(回滚),操作同样不会生效。

oracle为什么要执行commit呢?

DMLData manipulation language语言,比如updatedeleteinsert等修改表中数据需要commit;
DDL(Data definition language)语言,比如createdrop等改变表结构的,就不需要写commit(因为内部隐藏了commit;

DDL 数据定义语言:
create table 创建表  
alter table 修改表  
drop table 删除表  
truncate table 删除表中所有行  
create index 创建索引  
drop index 删除索引
当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(create
table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。

DML 数据操作语言:
insert 将记录插入到数据库  
update 修改数据库的记录  
delete 删除数据库的记录
当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动
发出commit命令,使未提交的DML命令提交。

3.dbms_output可以在命令执行完成后打印提示信息。

第六行:end存储过程执行体的结束标识。

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/62611/viewspace-1114556/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-09-06