返回顶部
首页 > 资讯 > 数据库 >SYS_REFCURSOR作为过程参数的表现是什么
  • 486
分享到

SYS_REFCURSOR作为过程参数的表现是什么

2024-04-02 19:04:59 486人浏览 安东尼
摘要

这篇文章主要讲解了“SYS_REFCURSOR作为过程参数的表现是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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%TYPE
IS
   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;
   
   DBMS_OUTPUT.put_line ('Count = ' || test_cur%ROWCOUNT);
   DBMS_OUTPUT.put_line ('Item = ' || NVL (lvitem, 'NOT SET'));
   CLOSE test_cur;
END;
/

下列的选项中哪些可用来代替 从而使得这个块执行之后,屏幕上可以见到如下输出?

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 = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL>

(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 = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL>

(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 = 2
Item = Mouse
PL/SQL procedure successfully completed
SQL>

(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 ignored
SQL>
答案ABC. 答案D错误因为plch_cur这个名称在函数之外是不可见的。
REF CURSOR作为IN参数(不需要定义为IN OUT),在FETCH之后游标仍然会前移,所以你调用之后再FETCH会取到下一行。

感谢各位的阅读,以上就是“SYS_REFCURSOR作为过程参数的表现是什么”的内容了,经过本文的学习后,相信大家对SYS_REFCURSOR作为过程参数的表现是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: SYS_REFCURSOR作为过程参数的表现是什么

本文链接: https://lsjlt.com/news/63649.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SYS_REFCURSOR作为过程参数的表现是什么
    这篇文章主要讲解了“SYS_REFCURSOR作为过程参数的表现是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SYS_REFCURSOR作为过程参数的...
    99+
    2024-04-02
  • 怎么使用DataTable作为存储过程的参数
    小编给大家分享一下怎么使用DataTable作为存储过程的参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  因为SQL Se...
    99+
    2024-04-02
  • c++类函数作为模板参数实现的方法是什么
    今天小编给大家分享一下c++类函数作为模板参数实现的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需求背景DB操作...
    99+
    2023-07-05
  • Golang函数作为参数使用的方法是什么
    这篇文章主要讲解了“Golang函数作为参数使用的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang函数作为参数使用的方法是什么”吧!为什么需要将函数作为参数传递在Gola...
    99+
    2023-07-06
  • golang rest参数的作用是什么
    在Go语言中,rest参数的作用是接收可变数量的参数。它是一种特殊的函数参数,可以接收任意数量的同类型参数。 rest参数使用三个点...
    99+
    2023-10-22
    golang
  • linux mencoder参数的作用是什么
    mencoder 是一个开源的视频编码和解码工具,常用于处理视频文件的转码和压缩。mencoder 的参数用于指定视频文件的输入和输...
    99+
    2023-10-18
    linux
  • spark submit参数的作用是什么
    Spark submit参数的作用是用来提交Spark应用程序的配置参数。通过Spark submit命令,用户可以指定应用程序的运...
    99+
    2024-04-02
  • MySQL存储过程输入参数,输出参数和输入输出参数是什么
    这篇“MySQL存储过程输入参数,输出参数和输入输出参数是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL存储过...
    99+
    2023-07-02
  • 什么是SQLServer中的存储过程参数和返回值
    在SQL Server中,存储过程参数是在创建存储过程时定义的变量,用于接收输入值或传递数据给存储过程。参数可以是输入参数、输出参数...
    99+
    2024-04-02
  • JSP中response.setContentType()参数的作用是什么
    response.setContentType()方法用于设置实体的MIME类型。MIME类型是一种表示数据类型的标识符,在HTTP...
    99+
    2023-08-12
    JSP
  • MySQLump中Lock-Tables参数的作用是什么
    MySQLump中Lock-Tables参数的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mysqldump有一个参数--lo...
    99+
    2024-04-02
  • python中位置参数的作用是什么
    今天就跟大家聊聊有关python中位置参数的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究...
    99+
    2023-06-14
  • mysql存储过程的作用是什么
    本篇内容主要讲解“mysql存储过程的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql存储过程的作用是什么”吧! ...
    99+
    2023-04-19
    mysql
  • @Scheduled参数及cron表达式是什么
    本篇内容主要讲解“@Scheduled参数及cron表达式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“@Scheduled参数及cron表达式是什么”吧!@Scheduled参数及cro...
    99+
    2023-06-22
  • Ajax是通过什么给XMLHttpReq.onreadystatechange传递参数
    这篇文章主要介绍“Ajax是通过什么给XMLHttpReq.onreadystatechange传递参数”,在日常操作中,相信很多人在Ajax是通过什么给XMLHttpReq.onreadystatecha...
    99+
    2024-04-02
  • php通过url传递参数的方法是什么
    PHP通过URL传递参数的方法有两种:1. 使用GET方法传递参数在URL后面添加参数,格式为`参数名1=值1&参数名2=值2&.....
    99+
    2023-08-09
    php
  • 如果作为参数提供的索引号不是整数,MySQL ELT() 函数的输出是什么?
    正如我们所知,ELT()函数的第一个参数必须是一个整数值,但是当我们提供的索引号不是整数时,MySQL的ELT()函数会返回NULL并显示警告。示例mysql> select ELT('one','Ram,is...
    99+
    2023-10-22
  • PS复位参数操作的技巧是什么
    本篇内容介绍了“PS复位参数操作的技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 隐藏技巧发动...
    99+
    2024-04-02
  • ipconfig命令及各参数的作用是什么
    ipconfig命令是Windows操作系统中用于查看和管理网络配置的命令行工具。它的作用是获取和显示当前计算机的网络配置信息,包括...
    99+
    2023-10-08
    ipconfig
  • JavaScript怎么实现回调作为参数传递
    这篇文章主要讲解了“JavaScript怎么实现回调作为参数传递”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript怎么实现回调作为参数传递”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作