8.2.7 带参数的游标
在使用显式游标时是可以指定参数的,指定的参数包括参数的顺序和参数的类型。参数可以传递给游标在查询中使用,这样就方便了用户根据不同的查询条件进行查询,也方便了游标在存储过程中的使用。本小节将介绍带参数的游标。
【示例9】使用带参数的游标
此类型的游标语法可以参考8.2.1小节。具体代码如下:
01 DECLARE
02 cur_productid productinfo.Productid%TYPE:='0240';
03 cur_productprice productinfo.Productprice%TYPE:=1200;
04 cur_prodrcd productinfo%ROWTYPE;
05
06 CURSOR pdct_parameter_cur(id VARCHAR,price NUMBER)
07 IS SELECT*FROM PRODUCTINFO
08 WHERE productid like id||'%'
09 AND productprice>price;
10
11 BEGIN
12 OPEN pdct_parameter_cur(cur_productid,cur_productprice);
13 LOOP
14 FETCH pdct_parameter_cur INTO cur_prodrcd;
15 EXIT WHEN pdct_parameter_cur%NOTFOUND;
16 DBMS_OUTPUT.PUT_LINE('产品ID:'||cur_prodrcd.productid||'产品名称:'||
17 cur_prodrcd.productname||'产品价格:'||
18 cur_prodrcd.productprice);
19 END LOOP;
20 CLOSE pdct_parameter_cur;
21 END;
【代码解析】
❑第2~3行声明变量并赋值,这两个参数是要传递给游标的变量。
❑第4行声明表productinfo的行对象,用来存放FETCH提取的数据。
❑第6行声明游标,包括两个参数,参数需要说明类型。
❑第7~9行是游标关联的查询语句,可以看到第8和第9行的查询条件都使用了游标里的变量。
❑第12行表示打开游标,并把第2和第3行的变量传入游标中。
❑其他脚本这里不做解释,读者可参照前面代码自行理解。
【执行效果】
执行效果如下:
产品ID:0240040001 产品名称:夏普LCD-46G100A 产品价格:7000
产品ID:0240030002 产品名称:三星WF-R1065S/XSC 产品价格:3600
产品ID:0240030003 产品名称:三星XQB55-T86A/XSC 产品价格:2500
产品ID:0240020001 产品名称:思科RV082路由器 产品价格:2800
从输出结果可以看出,得到的数据是经过游标中条件过滤的。这种带参数的游标在实际开发中经常用到,有时候也会根据参数的不同而打开不同的游标。这种情况会在存储过程中出现。
注意 当打开游标时并不单单局限示例中的方式,也可以直接写入具体的数值作为参数。当然,也可以变量同具体数值混合使用。关于这一点做过编程语言开发的用户不会陌生。