10.2.4 无参存储过程

无参存储过程就是创建的存储过程不带任何参数,通常这种存储过程用做数据转换的几率比较大。如果读者认真地学习了前面的章节,相信很容易理解这部分内容。

下面将用一个示例来介绍如何编写无参存储过程。

【示例4】无参存储过程

把表PRODUCTINFO中价格最低的3件产品的DESPERATION字段设置成“促销商品”。实现步骤如下:

1)将PRODUCTINFO中产品价格最低的3件产品查询出来。

2)把价格最低的3件产品DESPERATION字段加上“促销商品”字样。

创建存储过程的脚本如下:


01 CREATE PROCEDURE PRODUCT_UPDATE_PRC

02 AS

03 BEGIN

04 UPDATE PRODUCTINFO SET DESPERATION='促销产品'

05 WHERE PRODUCTID IN

06 (

07 SELECT PRODUCTID FROM

08 (SELECT*FROM PRODUCTINFO ORDER BY PRODUCTPRICE ASC)

09 WHERE ROWNUM<4

10 );

11 COMMIT;

12 END;

13 /


【代码解析】

这是一个结构相对简单的存储过程,它的函数体中只有一个稍微复杂点的SQL语句。下面简单说明一下该脚本。

❑第1行表示创建存储过程名为PRODUCT_UPDATE_PRC。

❑第4~10行实现了示例的要求。

❑第8行表示把表中所有记录根据产品价格进行升序排列。

❑第7~9行表示查询出价格最低的三条记录,这也是实现步骤中的第一点。

❑第11行表示提交更改。

【执行效果】

以上脚本在SQL*Plus中执行后将有如下提示:


过程已创建


此时的存储过程还没有得到执行,只是编译通过。下面执行PRODUCT_UPDATE_PRC,输入执行语句如下:


EXEC PRODUCT_UPDATE_PRC


执行完成后验证存储过程是否生效,查询表PRODUCTINFO的数据,整个流程如图10.3所示。

10.2.4 无参存储过程 - 图1

图 10.3 示例4的流程及结果