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.3 示例4的流程及结果