我想在不创建包的情况下测试我的流水线功能.以下示例已简化:
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;
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
ORA-06550:第7行,第7列:pls-00231:函数TESTDC不能在SQL
ORA-06550中使用:第7行第7行:PL/SQL:ORA-00904 ::无效标识符
ORA-06550:第7行,第7列:PL/SQL:忽略SQL语句
有什么更好的方法来测试这些功能?
您无法直接在 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21477 次 |
| 最近记录: |