必须声明标识符“ PIPELINED”

时间:2019-03-11 07:20:03

标签: oracle plsql

我的代码是:

CREATE OR REPLACE FUNCTION get_tab_ptf (p_rows IN NUMBER) 
RETURN PIPELINED AS 
BEGIN FOR i IN 1 .. p_rows 
LOOP 
PIPE ROW('Value is '||i);
END LOOP;
RETURN; 
END;

我得到的错误是

  

:PLS-00201:必须声明标识符“ PIPELINED”

有什么解决方案?

1 个答案:

答案 0 :(得分:1)

您首先应该为计划从函数中返回的元素定义一个集合类型。由于这是您要返回的字符串,因此table of VARCHAR2应该是您的首选。

create or replace type numval_type as table of VARCHAR2(30);

现在,在PIPELINED关键字之前提及此返回类型。

CREATE OR REPLACE FUNCTION get_tab_ptf (p_rows IN NUMBER) 
RETURN  numval_type PIPELINED AS  -- type should be specified here after return
BEGIN FOR i IN 1 .. p_rows 
LOOP 
  PIPE ROW('Value is '||i);
 END LOOP;
RETURN; 
END;
/

命名为

select * from TABLE(get_tab_ptf(100));

Demo