Получение ошибки ORA-01722 при выполнении следующего запроса - PullRequest
0 голосов
/ 15 сентября 2011

Запрос, который будет использоваться в моей реализации, вызывает ошибку ORA-01722.Ниже приведен запрос.

select ao.account_oid,ao.website_oid,ob.oid,ob.status_code,pi.oid,pi.render_status,ao.invoiced_date
from acct_order ao,order_basket ob, order_line_item oli,order_line_item_xml olix,project_info pi
where ao.oid = ob.account_order_oid and       
  ob.oid = oli.order_basket_oid and
  oli.oid = olix.order_line_item_oid and
  pi.oid = olix.xml_value and 
  olix.xml_key_code='PROJECT_INFO_OID' and      
  pi.oid = 10000450011; // this is not working

Примечание: «olix.xml_value» также может содержать строковые значения.

Я изменил его, заменив оператор «=» на оператор «in», и попытался:даже тогда это не удалось.Но если значение no для оператора «in» больше 1, то оно работает.

select ao.account_oid,ao.website_oid,ob.oid,ob.status_code,pi.oid,pi.render_status,ao.invoiced_date
from acct_order ao,order_basket ob, order_line_item oli,order_line_item_xml olix,project_info pi
where ao.oid = ob.account_order_oid and       
  ob.oid = oli.order_basket_oid and
  oli.oid = olix.order_line_item_oid and
  pi.oid = olix.xml_value and 
  olix.xml_key_code='PROJECT_INFO_OID' and      
  pi.oid in (10000450011,10000460011); // This is working. One argument to "in" operator is not working.

Поэтому я взял объяснение SQLDeveloper, но не смог его понять.Может кто-нибудь помочь мне разобраться в проблеме.

1 Ответ

0 голосов
/ 15 сентября 2011

Ошибка ORA-01722 возникает, когда делается попытка преобразовать символьную строку в число, и строка не может быть преобразована в действительное число.Допустимые числа содержат цифры от «0» до «9», возможно, с одной десятичной точкой, знаком (+ или -) в начале или конце строки или «E» или «e» (если это плавающее числономер точки в научной записи).Все остальные символы запрещены.

Какой тип pi.oid ?????????это строка или число.Вероятно, если это строка, она не может быть преобразована в число (это означает, что в нем есть некоторые запрещенные символы).

еще раз, если pi.oid - число, вы делаете что-то подобное

, что неоднозначно, потому что xml_value должен быть чем-то вроде строки.внимательно просмотрите ваш запрос и попробуйте убрать неоднозначности, связанные со строками и числами.Ваша проблема будет решена :)

...