SYS_REFCURSOR作为过程参数的表现是什么
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,这篇文章主要讲解了"SYS_REFCURSOR作为过程参数的表现是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SYS_REFCURSOR作为过程
千家信息网最后更新 2025年01月27日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安全错误
数据库的锁怎样保障安全
网络安全个人案例
锦江区蒂贸软件开发工作室
班德尔城服务器
网络安全工程师要学网页吗
中学生遵守网络安全作文450字
找工作java软件开发
浅析新时代网络安全
成都直销软件开发价格
初中网络安全手抄报a4竖版
石家庄服务器散热片厂家
高新区服务器回收服务
软件开发变更控制程序
漏洞检测网络安全
龙源新媒体数据库是啥
绍兴嵌入式软件开发需要学什么
sp3+数据库补丁
ein7网络安全密匙怎么获取
mc服务器如何设置账号系统
游戏服务器视频教程
空间数据库教程其中考试
手机连接服务器没有反应
咸宁软件开发费用
游戏数据库常用单词
组合数学密码学与网络安全
软件开发的薪资和待遇
服务器配置要考虑几兆带宽
连云港云服务器哪个厂家质量好
企业用于网络安全的费用
宝可梦服务器怎么修改设置
cess数据库管理