2016-01-05 2 views
1

Я пытаюсь выполнить этот код в oracle express. Я продолжаю получать результаты анализа, полученные с помощью парсинга.parsing возвращаемый запрос в sql

Синтаксический вернулся результаты запроса в "ORA-06550: строка 11, столбец 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; 
+1

Используйте dbms_output, чтобы распечатать запрос перед его выполнением. Скорее всего, вам нужно использовать две одинарные кавычки, в которых вы использовали один – kevinsky

+0

@kevinsky, можете ли вы изменить свой код, чтобы показать мне, куда положить эти кавычки и dbms_output? пожалуйста, –

+0

Привет, Могу ли я спросить, где на вершине вы поместили этот код? Является ли он источником данных отчета? Validation? dynamic action? or process? – brenners1302

ответ

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; 
Смежные вопросы