Oracle存储过程中Cursor的数据类型是什么?

时间:2017-01-24 22:20:23

标签: oracle stored-procedures cursor

我试图在Oracle中运行存储过程。它的定义如下:

CREATE OR REPLACE PROCEDURE real_estate_contracts
(
  P_FROM_DATE DATE,
  P_TO_DATE DATE,
  o_cursor  OUT ACCOUNTING_REPORTS.results_cursor 
 )

然后我就这样称呼它

BEGIN
  :P_FROM_DATE := to_date(trunc(trunc(sysdate,'MM')-1,'MM')+21);
  :P_TO_DATE := to_date(trunc(sysdate,'MM')+20);
  :O_CURSOR := NULL;


  QAW.REAL_ESTATE_CONTRACTS ( :P_FROM_DATE, :P_TO_DATE, :O_CURSOR );

END;

但我不知道如何定义Cursor数据类型。

2 个答案:

答案 0 :(得分:1)

我认为您希望将其定义为SYS_REFCURSOR。请看下面的示例:https://oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets

答案 1 :(得分:0)

在SQL开发人员中,你可以这样做:

VARIABLE cur REFCURSOR;

BEGIN
  QAW.REAL_ESTATE_CONTRACTS(
    p_from_date => ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), - 1 ) + 21,
    p_to_date   => TRUNC( SYSDATE, 'MM' ) + 20,
    o_cursor    => :cur
  );
END;
/

PRINT cur;