首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PLS-00231:函数不能在SQL中使用。

PLS-00231:函数不能在SQL中使用。
EN

Stack Overflow用户
提问于 2015-09-10 15:12:55
回答 2查看 35.9K关注 0票数 11

我想在不创建包的情况下测试我的流水线函数。简化了以下示例:

代码语言:javascript
运行
复制
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语句

有什么更好的方法来测试这些功能呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-10 16:46:58

将管道函数创建为独立的过程或包成员。然后你可以从你的脚本调用它。

还要确保您引用的NCOL参数是在调用脚本可以访问的架构中声明的。

票数 14
EN

Stack Overflow用户

发布于 2015-09-11 08:57:59

您无法在PL/SQL中直接访问表函数-请参见下面的测试用例。因此,正如其他人指出的,您必须将表函数定义为独立的或打包的。

代码语言:javascript
运行
复制
 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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32505663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档