【问题标题】:ORA-00923: FROM keyword not found where expected in Oracle APEXORA-00923: 在 Oracle APEX 中未找到预期的 FROM 关键字
【发布时间】:2020-09-15 21:25:08
【问题描述】:

我正在尝试使用动态 sql 使用 sql 查询编辑器绘制图表。我已经在第 4 页中构建了一部分查询,我想在第 5 页中使用它。

在第 4 页中,我将向存储过程传递参数的查询构建到数据库中的一个包中,接收查询的一部分。我需要用这种方式

这是结构查询的一部分:

:P4_STRINGA_VIEW = from VIEW_OEE_MAC_MENSILE where V_COD_MACCHINA= 'REP03' and V_ANNO = '2020';

我尝试在没有关键字“From”的情况下构建查询,结果如下:

在我看到的很多关于动态 sql 的例子中,大部分都使用 pl\sql 代码。从数据库获取数据的图表系列选项是 sql 查询和 PL\sql 函数体以返回 sql 查询。我都试过了,但我总是遇到同样的错误。

我已经查找了有关它的示例和文档,但我没有找到解决问题的方法

【问题讨论】:

    标签: oracle plsql oracle-apex oracle-apex-19.1


    【解决方案1】:

    这个例子在 SQL*Plus 中工作;也应该在 Apex 中。

    返回select 语句的函数(你只有一个函数体;使用declare 而不是我发布的第一行)如下所示;我对p4_stringa_view 进行了硬编码,因为我不知道你是如何得到它的:

    SQL> create or replace function f_test return varchar2 as
      2    p4_stringa_view varchar2(200) := 'from emp where deptno = 10';
      3    retval varchar2(200);
      4  begin
      5    return q'[select 'A' label, ename as V_OEE ]' || p4_stringa_view;
      6  end;
      7  /
    
    Function created.
    

    执行时返回

    SQL> select f_test from dual;
    
    F_TEST
    --------------------------------------------------------------------------------
    select 'A' label, ename as V_OEE from emp where deptno = 10
    

    select 语句本身是否有效?

    SQL> select 'A' label, ename as V_OEE from emp where deptno = 10  ;
    
    L V_OEE
    - ----------
    A CLARK
    A KING
    A MILLER
    
    SQL>
    

    是的,确实如此。


    【讨论】:

    • 感谢您的回答。我正在尝试您的解决方案,但不幸的是我无法解决我的问题。我已经对您的解决方案进行了修改。我正在向函数传递一个参数。在 sql developer 我已将函数添加到包中,并且在 apex 中我在 sql 查询编辑器中编写了此语句 select 'A' label, apex_504.P5_READ_MULTIVALUES(:P4_STRINGA_VIEW) from dual;但我继续收到此错误消息:" ORA-04062: 包 APEX_504 的时间戳;它已被更改。最初该函数返回一个数字,但在这种情况下我也收到一条错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多