SYS_REFCURSOR作为过程参数的表现是什么
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要讲解了"SYS_REFCURSOR作为过程参数的表现是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SYS_REFCURSOR作为过程
千家信息网最后更新 2025年11月15日SYS_REFCURSOR作为过程参数的表现是什么
这篇文章主要讲解了"SYS_REFCURSOR作为过程参数的表现是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SYS_REFCURSOR作为过程参数的表现是什么"吧!
我创建了如下的表并填充数据:
CREATE TABLE plch_tab (item VARCHAR2 (10))/ BEGIN INSERT INTO plch_tab VALUES ('Keyboard'); INSERT INTO plch_tab VALUES ('Mouse'); COMMIT;END;/然后我创建了这个函数,从游标变量取得一行数据并返回:
CREATE OR REPLACE FUNCTION plch_getitem ( plch_cur IN SYS_REFCURSOR) RETURN plch_tab.item%TYPEIS lvretval plch_tab.item%TYPE;BEGIN FETCH plch_cur INTO lvretval; RETURN lvretval;END plch_getitem;/
现在我需要写一个程序块来获取表里的数据行,并且显示行数和最后一行的项目名称。下面就是这个接近完成的版本:
DECLARE lvitem plch_tab.item%TYPE; test_cur SYS_REFCURSOR;BEGIN OPEN test_cur FOR SELECT * FROM plch_tab ORDER BY item; /*FETCH*/ DBMS_OUTPUT.put_line ('Count = ' || test_cur%ROWCOUNT); DBMS_OUTPUT.put_line ('Item = ' || NVL (lvitem, 'NOT SET')); CLOSE test_cur;END;/下列的选项中哪些可用来代替 /*FETCH*/ 从而使得这个块执行之后,屏幕上可以见到如下输出?
Count = 2
Item = Mouse
(A)
FETCH test_cur INTO lvitem;lvitem := plch_getitem (test_cur);
SQL> DECLARE 2 lvitem plch_tab.item%TYPE; 3 test_cur SYS_REFCURSOR; 4 BEGIN 5 OPEN test_cur FOR 6 SELECT * FROM plch_tab ORDER BY item; 7 8 FETCH test_cur 9 INTO lvitem; 10 lvitem := plch_getitem(test_cur); 11 12 DBMS_OUTPUT.put_line('Count = ' || test_cur%ROWCOUNT); 13 DBMS_OUTPUT.put_line('Item = ' || NVL(lvitem, 'NOT SET')); 14 15 CLOSE test_cur; 16 END; 17 /Count = 2Item = MousePL/SQL procedure successfully completedSQL>(B)
lvitem := plch_getitem (test_cur);lvitem := plch_getitem (test_cur);
SQL> DECLARE 2 lvitem plch_tab.item%TYPE; 3 test_cur SYS_REFCURSOR; 4 BEGIN 5 OPEN test_cur FOR 6 SELECT * FROM plch_tab ORDER BY item; 7 8 lvitem := plch_getitem(test_cur); 9 lvitem := plch_getitem(test_cur); 10 11 DBMS_OUTPUT.put_line('Count = ' || test_cur%ROWCOUNT); 12 DBMS_OUTPUT.put_line('Item = ' || NVL(lvitem, 'NOT SET')); 13 14 CLOSE test_cur; 15 END; 16 /Count = 2Item = MousePL/SQL procedure successfully completedSQL>(C)
lvitem := plch_getitem (test_cur);FETCH test_cur INTO lvitem;
SQL> DECLARE 2 lvitem plch_tab.item%TYPE; 3 test_cur SYS_REFCURSOR; 4 BEGIN 5 OPEN test_cur FOR 6 SELECT * FROM plch_tab ORDER BY item; 7 8 lvitem := plch_getitem(test_cur); 9 FETCH test_cur 10 INTO lvitem; 11 12 DBMS_OUTPUT.put_line('Count = ' || test_cur%ROWCOUNT); 13 DBMS_OUTPUT.put_line('Item = ' || NVL(lvitem, 'NOT SET')); 14 15 CLOSE test_cur; 16 END; 17 /Count = 2Item = MousePL/SQL procedure successfully completedSQL>(D)
lvitem := plch_getitem (test_cur);FETCH plch_cur INTO lvitem;
SQL> DECLARE 2 lvitem plch_tab.item%TYPE; 3 test_cur SYS_REFCURSOR; 4 BEGIN 5 OPEN test_cur FOR 6 SELECT * FROM plch_tab ORDER BY item; 7 8 lvitem := plch_getitem(test_cur); 9 FETCH plch_cur 10 INTO lvitem; 11 12 DBMS_OUTPUT.put_line('Count = ' || test_cur%ROWCOUNT); 13 DBMS_OUTPUT.put_line('Item = ' || NVL(lvitem, 'NOT SET')); 14 15 CLOSE test_cur; 16 END; 17 /DECLARE lvitem plch_tab.item%TYPE; test_cur SYS_REFCURSOR;BEGIN OPEN test_cur FOR SELECT * FROM plch_tab ORDER BY item; lvitem := plch_getitem(test_cur); FETCH plch_cur INTO lvitem; DBMS_OUTPUT.put_line('Count = ' || test_cur%ROWCOUNT); DBMS_OUTPUT.put_line('Item = ' || NVL(lvitem, 'NOT SET')); CLOSE test_cur;END;ORA-06550: 第 9 行, 第 9 列: PLS-00201: 必须声明标识符 'PLCH_CUR'ORA-06550: 第 9 行, 第 3 列: PL/SQL: SQL Statement ignoredSQL>答案ABC. 答案D错误因为plch_cur这个名称在函数之外是不可见的。REF CURSOR作为IN参数(不需要定义为IN OUT),在FETCH之后游标仍然会前移,所以你调用之后再FETCH会取到下一行。
感谢各位的阅读,以上就是"SYS_REFCURSOR作为过程参数的表现是什么"的内容了,经过本文的学习后,相信大家对SYS_REFCURSOR作为过程参数的表现是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
参数
过程
一行
数据
学习
内容
函数
名称
就是
游标
答案
变量
屏幕
思路
情况
文章
更多
标识
标识符
版本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小鹅网络技术是什么
电信4G网络安全吗
软件开发类招标评分标准
抖音红盟网络安全工作室
广东服务器电源批发商
幼儿园网络安全简单画画
计算机软件技术与软件开发
饥荒联机版进不去好友的服务器
服务器访问淘宝亲访问被拒绝
北京分享在线网络技术
肇庆无限软件开发维修电话
网络安全产业的指导意见
兰州牛大网络安全
郑州六月网络技术有限公司
nba新浪数据库总得分
dell服务器设置管理口
上海市网络安全合作平台
淮安计算机网络技术服务价格
常见网络安全侵害事例
银行如何做好网络安全管理
通信网络安全操作心得
广州市猎牛宝网络技术
邯郸软件开发项目管理
北京海致网络技术公司怎么样
服务器ESN哪里导出
新浪邮箱pop服务器
ibm公司软件开发面试问题
网络安全校园日教学重难点
软件开发后悔吗
海康录像机连接海康存储服务器