存储过程的使用(一)

发布于:2024-04-20 ⋅ 阅读:(30) ⋅ 点赞:(0)

目录

不带参数的存储过程

创建一个存储过程,向数据表 dept 中插入一条记录

带 IN 参数的存储过程

在存储过程中接受来自外部的数值,在存储过程中判断该数值是否大于零并显示

输入一个编号,查询数据表emp中是否有这个编号,如果有则显示对应员工姓名,如果没有,则提示没有对应员工

创建一个存储过程,向数据表 dept 中插入一条记录


Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645


不带参数的存储过程

前面已经介绍了存储过程的创建以及调用,下面就通过范例来学习存储过程的使用。
不带参数的存储过程相比起来较为简单,在存储过程中执行某一指定动作序列。下面看一个范例。

创建一个存储过程,向数据表 dept 中插入一条记录

分析:

这个范例不需要参数,只需要在存储过程体中添加一个插入语句即可。过程创建代码如下图

如上图所示。存储过程 pro_tidata 成功创建,尽管过程已经成功创建,但是并没有执行。如果想要执行这个过程,

执行代码如下图所示

即使用 EXEC 命令执行该过程。如前所述,也可以在 PL/SQL块中直接调用,

如下图所示。

带 IN 参数的存储过程

使用 IN 参数可以向存储过程中的程序单元输入数据,在调用的时候提供参数值,被存储过程读取。
这种模式是默认的参数模式。下面就看一个范例。

在存储过程中接受来自外部的数值,在存储过程中判断该数值是否大于零并显示

分析:

这个存储过程可以使用IN参数接受来自外部的数值,进而在存储过程中进行判断。

过程代码如下图所示。

下面来测试一下存储过程是否可用,使用EXEC命令,如下图所示

我们可以看出,存储过程接受外面调用传来的值,进行判断,实现最终要求。

输入一个编号,查询数据表emp中是否有这个编号,如果有则显示对应员工姓名,如果没有,则提示没有对应员工

分析:

输入编号可以对应一个 IN 参数,然后再存储过程中使用 WHERE 语句查询,使用 INTO 子句把结果赋予一个变量。

存储过程如下图所示。

存储过程创建后,下面测试一下是否符合要求,仍然使用EXEC 命令执行,如下图所示。

如图所示,当输入编号为“7369”时,可以在数据表中找到对应记录,并显示结果;如果查询编号为“7320”时,此时数据表中没有对应记录,则显示无此员工。

前面两个例子中 IN 参数只有一个,下面看一个有多个 IN 参数的情况。可以使用无参数存储过程一节的范例。

创建一个存储过程,向数据表 dept 中插入一条记录

分析:

我们这次使用IN参数来实现这个范例,可以定义3个IN参数,分别接收来自外部调用的值。
存储过程如下图所示。

过程创建后,可以通过调用向过程中传递参数,如下图所示。

调用的时候,需要注意,调用时参数的书写顺序应该与存储过程中 IN 参数的顺序一样,

如上图所示,

“22”对应“var deptno”,“MANAGER”对应“var ename”,“BEIJING”对应“var_loc”。如果顺序不一样,应明确指明,例如上面的指令可以修改为如下形式

EXEC pro_add(var_name=>'MANAGER',var_deptno=>22,var_oc=>'BEIING')