在 sql 中解析返回的查询

parsing returned query in sql

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

Parsing returned query results in "ORA-06550: line 11, column 19: ORA-00933: SQL command not properly ended". If you believe your query is syntactically correct, check the "Use Generic Column Names" checkbox below to proceed without parsing.

我不明白这是什么意思以及如何纠正这个错误。任何人都可以帮助我或给我一些建议吗?请

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; 

这是您脚本的精简版。故障排除的一部分是删除我们应该做的所有其他事情,比如注释代码和检查空值。下面的代码只是一个测试用例,在 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;