有人可以解释一下如何以及何时应该在 oracle 中使用 syscursor 吗? [关闭]
Posted
技术标签:
【中文标题】有人可以解释一下如何以及何时应该在 oracle 中使用 syscursor 吗? [关闭]【英文标题】:Can some one give me a explanation about how and when should use syscursor in oracle? [closed] 【发布时间】:2017-01-19 03:42:53 【问题描述】:以syscursor
为例进行说明。
什么时候在plsql过程中使用syscursor?我浏览了网站,但不知道如何以及何时使用它。
【问题讨论】:
文档中有一整章与游标相关:docs.oracle.com/database/121/LNPLS/static.htm#LNPLS00602 网上有很多文章:oracle.com/technetwork/issue-archive/2013/13-mar/… 这个问题太宽泛了,我投票结束。 Alternate of sys_refcursor的可能重复 【参考方案1】:PL/SQL 过程使用SYS_REFCURSOR 返回记录集。
示例 - 让我们获取给定模式的所有表详细信息并通过 sys_refcursor 返回
CREATE OR REPLACE PROCEDURE GET_TABLE_DETAILS(schemaName IN VARCHAR2,
table_details OUT SYS_REFCURSOR) IS
BEGIN
OPEN table_details FOR
select table_name, column_name, data_type from ALL_TAB_COLUMNS where OWNER = schemaName;
END GET_TABLE_DETAILS;
这里的table_details out参数将包含选择查询的结果数据,可以如下检索。
DECLARE
table_details_cursor SYS_REFCURSOR;
tab_name ALL_TAB_COLUMNS.table_name%TYPE;
col_name ALL_TAB_COLUMNS.column_name%TYPE;
data_type ALL_TAB_COLUMNS.data_type%TYPE;
BEGIN
GET_TABLE_DETAILS (schemaName => 'DUMMY',
table_details => table_details_cursor);
LOOP
FETCH table_details_cursor
INTO tab_name, col_name, data_type;
EXIT WHEN table_details_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(tab_name || ' | ' || col_name || ' | ' || data_type);
END LOOP;
CLOSE table_details_cursor;
END;
不过详细解释需要通过Oracle文档-Oracle - Cursors Documenatation
【讨论】:
【参考方案2】:据我所知,Oracle 中没有像“syscursor”这样的东西。可能你指的是 SYS_REFCURSOR
以下网址应该可以帮助您了解如何以及何时使用它。
https://oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets
【讨论】:
其实SYS_REFCURSOR只是数据类型RefCursor的别名。 RefCursor 的值是一个“游标”。以上是关于有人可以解释一下如何以及何时应该在 oracle 中使用 syscursor 吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章