1.理解Oracle存储过程
它是将一些固定的操作集中起来由Orcale数据库服务器来完成,为减少重复写SQL语句
2.认识存储过程
标准的SQL是面向数据的,不能对其进行程序化(例如:不提供循环控制,条件控制等关键字)但是Orcale数据库系统提供了存储过程对象,它以特定的顺序排列PL/SQL语句序列,并且可以指定名称、加已编译并保存在数据库中。一旦数据库管理系统创建了存储过程对象,用户便可以使用应用程序,通过单条命令通知Oracle执行存储过程中语句--类似于在应用程序中调用子程序。
以上文字总是让人难已理解,话不多说,看例子。
1.存储过程语法
CREATE PROCEDUCE [schema.] procedure_name [ parameter_name [ [IN] datetype[{:=|DEFAULT} expression]|
-创建 -存储过程所属机构 -存储过程的名称 -过程中的参数名称 -传入类型参数以及数据类型和默认值
{OUT| IN OUT}[NOCOPY]datatype][,...] {IS|AS}
-输出参数或是即可输入也可输出参数 -连接词
2.存储过程的执行
EXEC proecdure_name;
还可以用如下方式:
BEGIN
procedure_name;
END
执行带有参数的存储
EXEC proecdure_name(parameters);
如果执行过程带有输出语句,那么需要设置输出状态
SHOW SERVEROUTPUT;--打开
serveroutput off | SER SERVEROUTPUT ON;--关闭
3.创建无参数的存储过程-->主要针对表或视图的查询,更新或者删除
--创建表 READERINFO
CREATE TABLE READERINFO
(
READERID NUMBER(4) NOT NULL,
READERNAME VARCHAR2(10) NOT NULL,
SEX CHAR(4) DEFAULT '男',
UNIT VARCHAR2(50),
BOOKCOUNT NUMBER(4) DEFAULT 1
);
--表中插入元素
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9701,'朱树军','男','自动化',2);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9702,'丁属于','男','计算机',2);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9703,'猪猪侠','女','金融系',3);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9704,'蝙蝠侠','男','自动化',7);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9705,'皮蛋','女','英语系',5);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9706,'小黑','男','自动化',7);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9707,'天山童','女','森林系',9);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9708,'炮哥','男','社会系',10);
INSERT INTO READERINFO(READERID,READERNAME,SEX,UNIT,BOOKCOUNT)
VALUES(9709,'美养养','女','农业系',4);
--创建无参数存储过程
CREATE PROCEDURE PRO_READERINFO3
AS
BEGIN
UPDATE READERINFO SET BOOKCOUNT=BOOKCOUNT+1 WHERE UNIT='自动化';
END;
/