【问题标题】:Can some one give me a explanation about how and when should use syscursor in oracle? [closed]有人可以解释一下如何以及何时应该在 oracle 中使用 syscursor 吗? [关闭]
【发布时间】:2017-01-19 03:42:53
【问题描述】:

syscursor为例进行说明。

什么时候在plsql过程中使用syscursor?我浏览了网站,但不知道如何以及何时使用它。

【问题讨论】:

标签: oracle plsql


【解决方案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 的值是一个“游标”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多