小编ser*_*ion的帖子

具有记录类型的Oracle流水线功能

我有以下情况:

CREATE OR REPLACE FUNCTION GET_CURSOR_PIPELINE(placeholder IN NUMBER)
RETURN MY_RECORD_TYPE PIPELINED IS

 TYPE CURSOR_TYPE IS REF CURSOR;
 myCursor CURSOR_TYPE;

 TYPE RECORD_TYPE IS RECORD(
   record_id NUMBER, 
   firstname VARCHAR(50)
 );
 resultSet RECORD_TYPE; 

BEGIN

OPEN myCursor FOR

SELECT 1, 'Scott' FROM DUAL
UNION
SELECT 2, 'Tiger' FROM DUAL;

IF (myCursor IS NOT NULL) THEN

  LOOP
      FETCH myCursor INTO resultSet;
      EXIT WHEN myCursor%NOTFOUND;
      PIPE ROW (MY_RECORD_OBJ(
        resultSet.record_id, 
        resultSet.firstname
      ));
  END LOOP;

  CLOSE myCursor;

END IF;

END GET_CURSOR_PIPELINE;
Run Code Online (Sandbox Code Playgroud)

我的生产代码和上面的示例之间的唯一区别是我需要从真实表中获取大约20个字段,而不仅仅是来自DUAL的2个字段.

我想避免使用锅炉代码,我必须明确列出所有涉及的字段.上面的函数工作正常,但我必须定义所有涉及的字段3次.该拳的时间,当我将返回类型定义.

CREATE …
Run Code Online (Sandbox Code Playgroud)

oracle plsql pipeline

1
推荐指数
1
解决办法
1451
查看次数

标签 统计

oracle ×1

pipeline ×1

plsql ×1