oracle 存储过程的写法及简单实例,oracle 储存过程

oracle 存储过程的写法及简单实例,oracle 储存过程,Oracle存储过程案例详解

这篇文章主要介绍了神谕存储过程案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

创建简单存储过程(Hello World)

为了方便读者简单易懂,我将下面使用到的表复制给大家。

具体表中的数据,请大家自己填写

-创建表格

创建表电磁脉冲(electromagnetic pulse)

empno编号(4)不为空,

ename VARCHAR2(10),

job VARCHAR2(9),

经理编号(4),

雇佣日期,

萨尔数(7,2),

通信号(7,2),

部门编号(2)

)

创建或替换过程firstP(varchar 2中的名称)是

/*这里名字为的参数,在为输入,varchar2为类型*/

开始

/* DBMS _ outputput _ line();相当输出到控制台上,这样我们一个简单的存储过程就完成啦

记住一句话的结束使用分号结束,存储过程写完一定要执行

将它保存到数据库中(F8)快捷键,或者点击左上角执行*/

dbms_output.put_line(我的名字叫| |姓名);/*dbms_output.put_line相当于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的System.out.println(我的名字叫姓名);*/

结束优先p

下面我们要对刚刚写过的存储过程进行测试,我们开启测试窗口这个窗口

-创建于2018年12月30日星期日由管理员

声明

-这里是局部变量

/*测试名称名称类型使用:=给参数赋值,在多说一句,分号结束本句*/

name2 varchar2(64):=数据库;

开始

-此处测试语句

firstp(名称2);

结束;

我们打开数据库管理系统输出就可以看到执行的存储过程啦。

存储过程IF判断

创建或替换过程isifp(年龄数)是

/*存储过程如果判断以然后开始,以结束如果;结束*/

开始

如果(30岁)那么

dbms_output.put_line(我已经超过30岁了);

其他

如果(10岁)那么

dbms_output.put_line(我还是个儿童);

其他

dbms_output.put_line(我正在奋斗时期);

结束如果;

结束如果;

结束;

存储过程输出

创建或替换过程输入dout(姓名输入varchar2,年龄输入数字,输出varchar 2)为

/*英寸代表输入,出局代表输出*/

开始

输出:=我的名字是 ||姓名|| ,我的年龄是 | |年龄;/*相当于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中的返回输出,但是请注意,存储过程中可以返回多个值*/

结束于出;

测试输出代码

-创建于2018年12月30日星期日由管理员

声明

-这里是局部变量

name varchar2(64):=数据库;

年龄号:=06;

out _ p varchar 2(64);

开始

-此处测试语句

inandout(姓名,年龄,输出=:out _ p);

/*这里的输出是存储过程中的输出参数,out_p是在测试中使用的别名*/

结束;

返回游标

将过程sysrefcursor(id在数字中,列在系统引用光标之外)创建或替换为

/* sys _ ref游标外的列为输出游标*/

开始

为打开列

从员工中选择*其中empno=id

结束;

测试游标

第一种测试方法

-创建于2018年12月30日星期日由管理员

声明

-这里是局部变量

游标电子工程师是从员工中选择*其中empno=7934

开始

-此处测试语句

对于电子工程师循环中的e

DBMS _ outputput _ line( deptno: | | e . deptno);

结束循环;

结束;

输出结果如下:

第二种测试方法

-创建于2018年12月30日星期日由管理员

声明

-这里是局部变量

游标电子工程师是从员工中选择*其中empno=7934

curee % rowtype

开始

-此处测试语句

打开ee;

把电子工程师取成坏蛋

当ee %未找到时退出;

DBMS _ outputput _ line( name: | | cur。ename);

结束循环;

关闭ee;

结束;

上面测试结果仅仅返回一条数据。下面我来演示返回多条数据的情况。

首先请看我表中的数据

有两个工作中内容为职员的数据。

-创建于2018年12月30日星期日由管理员

声明

-这里是局部变量

游标电子工程师是select * from emp,其中职员

开始

-此处测试语句

对于电子工程师循环中的e

DBMS _ outputput _ line( deptno: | | e . deptno);

结束循环;

结束;

游标返回多条数据。

由于对于初学者来说,光标可能不容易理解,所以我将用JAVA来描述它们。

当我们在java程序中编写条件查询时,返回的数据是List generic。这个操作相当于一个光标。说白了就是一个查询。(不要误认为是这么简单的SQL。为什么要用光标?因为只是为了方便读者学习光标。具体商业分析请不要推杠。)

当我们要使用列表中的数据,用循环调用某一段数据的时候,是不是要用实体类对象指向get字段?可以理解为对于ee循环中的e DBMS _ output . put _ line( deptno: | | e . deptno);结束循环;

这里是E.deptno。

获取table中的column

创建或替换过程intop(id in number,print2 out varchar2)为

e _ name varchar 2(64);

开始

select ename into e_name from emp其中empno=id

如果e_name=ALLEN 那么

DBMS _ output . put _ line(e _ name);

print2:=我的名字是 | | e _ name

否则如果e_name=SMITH 那么

2:= print 2:=SQL | | e _ name;

其他

2:= print 2:=others ;

结束if;

结束if;

end intop

稍微复杂一点存储过程

因为这里有个朋友有使用存储过程的需求,然后更新博客。

让我们先创建一个表。

-创建表格

创建表类

身份证号不为空,

名称VARCHAR2(14),

class sc varchar 2(10),

序列号(5)

)

表空间用户

pctfree 10

initrans 1

maxtrans 255

储存;储备

初始64K

下一个1M

minextents 1

maxextents无限制

);

-创建/重新创建主、唯一和外键约束

更改表类

添加约束PK_CLASSES主键(ID)

使用索引

表空间用户

pctfree 10

initrans 2

maxtrans 255

储存;储备

初始64K

下一个1M

minextents 1

maxextents无限制

);

让我们创建一个序列

-创建序列

创建序列SEQ _分类

最小值1

最大值999999999999999999999999999999999

从2开始

增加1

高速缓存20;

我希望您不介意我创建下面的存储过程,并以一种混乱的方式编写它。

创建或替换过程声明(varchar2,

varchar中的classescs)为

/*实际上就是我们创建存储过程时的样子*/

身份证号;/*设置变量名*/

c数;

序列号;

开始

从dual中选择SEQ _类. nextval到id;/*获取下一个序列并使用into为变量名id赋值*/

DBMS _ output . put _ line( classes cs= | | classes cs);/*只是打印*/

select count(*)into c from Classes c=Classes cs;/*条件判断,classsc=变量传入*/

If (c 0) then/*当数量大于0时*/

select max(seq)1 into seq from Classes c=Classes cs;

DBMS _输出;put _ line( first seq | | seq);

其他

如果(c=0)那么

seq:=0;/*如果查询次数为0,我们将seq变量赋给0*/

DBMS _ output . put _ line(seq | | seq when c=0);

结束if;

结束if;

插入到类中

(id,名称,类别c,顺序)

价值观念

(id、名称、类别、顺序);

/*insert insert这个不用说,大家都懂;请注意,我们必须在插入后提交。

否则,数据不会持久保存到数据库中,并且此插入没有任何意义*/

结束宣告;

我们称之为存储过程。

-由管理员创建于2019年1月7日星期一

声明

-这里是局部变量

Names varchar2(32):=晓明;

classcs varchar 2(32):= Class 1 ;

开始

-此处测试语句

宣言(名称、类别);

结束;

这就是本文关于Oracle存储过程案例的详细解释。有关Oracle存储过程的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

oracle 存储过程的写法及简单实例,oracle 储存过程