【问题标题】:parsing returned query in sql在sql中解析返回的查询
【发布时间】:2016-04-09 15:49:48
【问题描述】:

我正在尝试在 oracle application express 中执行此代码。我不断收到解析返回的查询结果。

解析返回的查询结果在“ORA-06550: line 11, column 19: ORA-00933: SQL 命令未正确结束”。如果您相信您的查询 语法正确,请检查“使用通用列名” 下面的复选框以继续而不进行解析。

我无法弄清楚这意味着什么以及如何更正此错误。任何人都可以帮助我或给我一些建议吗?请。

IF v('P2_POSTCODE_SEARCH') IS NOT NULL THEN
   GEOCODE_GM_XML (l_postcode, l_lat, l_lng);
l_query := l_query||' '||' 
TO_CHAR(
       SDO_GEOM.SDO_DISTANCE
       (SDO_GEOMETRY(2001, -- SDO_GTYPE
                                 8307, -- SDO_SRID
                                 SDO_POINT_TYPE('||l_lng||', --X longitude
                                                '||l_lat||', --Y latitude
                                                null),     --Z 3D only
                                 null, -- SDO_ELEM_INFO_ARRAY
                                 null), -- SDO_ORDINATE_ARRAY 
        location, 
        0.005, 
        ''unit=mile''),''9g999'') distance';

else

l_query := l_query||' '||' NULL DISTANCE';
END IF; 

【问题讨论】:

  • 在执行前使用 dbms_output 打印查询。很有可能您需要在使用过一个单引号的地方使用两个单引号
  • @kevinsky 你能编辑我的代码来告诉我把这些引号和 dbms_output 放在哪里吗?请
  • 您好,请问您将此代码放在 apex 的哪个位置?是在报表查询源中吗?验证?动态操作?或流程?
  • @brenners1302 是报表查询源。
  • 您使用的是 apex 5 还是更低版本?AFAIK,只有 apex 5 有一个功能,可以让您使用函数体创建报告。您可以发布从声明开始到结束的整个查询声明?

标签: sql oracle oracle-sqldeveloper oracle-apex


【解决方案1】:

这是您的脚本的精简版。故障排除的一部分是删除我们应该做的所有其他事情,比如注释代码和检查空值。下面的代码只是一个测试用例,在 Oracle 11g 上编译和运行。 作为脚本运行它并为 l_lng 和 l_lat 提供一些值。检查输出,测试并重复。

DECLARE
  L_QUERY VARCHAR2(2000);
  l_lng  NUMBER(20);
  l_lat NUMBER(20);
BEGIN

  L_QUERY := L_QUERY || ' ' || ' 
    TO_CHAR(
           SDO_GEOM.SDO_DISTANCE
           (SDO_GEOMETRY(2001, 
                                     8307, 
                                     SDO_POINT_TYPE(' || L_LNG || ', 
                                                    ' || L_LAT || ', 
                                                    null),     
                                     null, 
                                     null), 
            location, 
            0.005, 
            ''unit=mile''),''9g999'') distance';

  L_QUERY := L_QUERY || ' ' || 'FROM BARS';

  DBMS_OUTPUT.PUT_LINE(L_QUERY);
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2020-01-02
    相关资源
    最近更新 更多