调用另一个独立流水线函数的独立流水线函数

standalone pipelined function calling another standalone pipelined function

我想写两个流水线函数,独立的,意思是在 PL/SQL 包之外:

create or replace function fn_test_1 
return sys.DBMS_DEBUG_VC2COLL pipelined -- ODCIVARCHAR2LIST 
AS
BEGIN
  FOR l_row in ( ... )
  LOOP
    PIPE ROW('text');
    PIPE ROW('other text');
    PIPE ROW(strings_concatenated);
  END LOOP;
END;
/

create or replace function fn_test_2 
return sys.DBMS_DEBUG_VC2COLL pipelined -- ODCIVARCHAR2LIST 
AS
BEGIN
  FOR l_row in ( select column_value as line from TABLE( fn_test_1 ) )
  LOOP
    PIPE ROW(l_row);
  END LOOP;
END;
/

fn_test_1 编译成功并且工作正常。但是我无法编译 fn_test_2 因为:

PLS-00382: expression is of wrong type

我什至可以编写一个调用另一个的独立流水线函数吗?

你是 return 游标而不是它的值,使用这个:

create or replace function fn_test_2 
return sys.DBMS_DEBUG_VC2COLL pipelined -- ODCIVARCHAR2LIST 
AS
BEGIN
  FOR l_row in ( select column_value as line from TABLE( fn_test_1 ) )
  LOOP
    PIPE ROW(l_row.line);
  END LOOP;
END;
/