我想在不创建包的情况下测试我的流水线函数。简化了以下示例:
DECLARE
FUNCTION testDC RETURN NCOL PIPELINED IS
BEGIN
PIPE ROW(5);
END;
BEGIN
FOR cur IN (select * from table (testDC())) LOOP
dbms_output.put_line('--> ');
END LOOP;
END;
但我知道这个错误:
ORA-06550:第7行,第7栏: pls-00231:函数TESTDC不能在SQL中使用 ORA-06550:第7行,第7列: PL/SQL: ORA-00904::无效标识符 ORA-06550:第7行,第7列: PL/ SQL :忽略SQL语句
有什么更好的方法来测试这些功能呢?
发布于 2015-09-10 16:46:58
将管道函数创建为独立的过程或包成员。然后你可以从你的脚本调用它。
还要确保您引用的NCOL参数是在调用脚本可以访问的架构中声明的。
发布于 2015-09-11 08:57:59
您无法在PL/SQL中直接访问表函数-请参见下面的测试用例。因此,正如其他人指出的,您必须将表函数定义为独立的或打包的。
DECLARE
res NUMBER;
FUNCTION testDC RETURN NCOL PIPELINED IS
BEGIN
PIPE ROW(5);
END;
BEGIN
res := testDC();
dbms_output.put_line('--> '||res);
END;
/
ORA-06550: line 3, column 12:
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
https://stackoverflow.com/questions/32505663
复制相似问题