Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 oracle.xml.sql.OracleXMLSQLException: Missing IN or OUT parameter  [new]
zirex
Member

Откуда:
Сообщений: 714
Помогите разобраться...

пробовал здесь
   	BANNER
1	Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
2	PL/SQL Release 10.2.0.1.0 - Production
3	CORE	10.2.0.1.0	Production
4	TNS for Linux: Version 10.2.0.1.0 - Production
5	NLSRTL Version 10.2.0.1.0 - Production

и здесь

   	BANNER
1	Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
2	PL/SQL Release 10.2.0.3.0 - Production
3	CORE	10.2.0.3.0	Production
4	TNS for Linux: Version 10.2.0.3.0 - Production
5	NLSRTL Version 10.2.0.3.0 - Production

и здесь тоже
   	BANNER
1	Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
2	PL/SQL Release 9.2.0.6.0 - Production
3	CORE	9.2.0.6.0	Production
4	TNS for Linux: Version 9.2.0.6.0 - Production
5	NLSRTL Version 9.2.0.6.0 - Production

так работает:

declare
  ctx dbms_xmlquery.ctxType;
  xml clob;
begin
  ctx := dbms_xmlquery.newContext('select :p as paramValue from dual');
  dbms_xmlquery.setBindValue(ctx, 'p', 'PARAVALUE');
  
  dbms_lob.createtemporary(xml, true);
  xml := dbms_xmlquery.getXML(ctx);
  
  dbms_output.put_line(xml);
  
  dbms_lob.freetemporary(xml);
  
  dbms_xmlquery.closeContext(ctx);   
end;

<?xml version = '1.0'?>
<ROWSET>
   <ROW num="1">
      <PARAMVALUE>PARAVALUE</PARAMVALUE>
   </ROW>
</ROWSET>


а так нет:

declare
  ctx dbms_xmlquery.ctxType;
  xml clob;
begin
  ctx := dbms_xmlquery.newContext('select :p as paramValue, :p as secondValue from dual');
  dbms_xmlquery.setBindValue(ctx, 'p', 'PARAVALUE');
  
  dbms_lob.createtemporary(xml, true);
  xml := dbms_xmlquery.getXML(ctx);
  
  dbms_output.put_line(xml);
  
  dbms_lob.freetemporary(xml);
  
  dbms_xmlquery.closeContext(ctx);   
end;

<?xml version = '1.0'?>
<ERROR>oracle.xml.sql.OracleXMLSQLException: Missing IN or OUT parameter at index:: 1</ERROR>


может где-то написано про ограничение в использовании параметров, при формировании xml с помощью dbms_xmlquery?
6 мар 07, 07:55    [3867140]     Ответить | Цитировать Сообщить модератору
 Re: oracle.xml.sql.OracleXMLSQLException: Missing IN or OUT parameter  [new]
TiG
Member

Откуда:
Сообщений: 780
zirex
может где-то написано про ограничение в использовании параметров, при формировании xml с помощью dbms_xmlquery?


В доках есть такое

Bind possible values to the query using the DBMS_XMLQuery.bind function. The binds work by binding a name to the position.


А вообще думается это следствие java-вского позиционного bind-инга. Обзывайте по разному bind-переменные (а что делать ;)
6 мар 07, 11:18    [3868205]     Ответить | Цитировать Сообщить модератору
 Re: oracle.xml.sql.OracleXMLSQLException: Missing IN or OUT parameter  [new]
zirex
Member

Откуда:
Сообщений: 714
спасибо. дело в том, что SQL-ли пишут разработчики в CLOB-ах
единственное, что напрашивается, это сделать предварительный парсинг SQL-ей на предмет поиска и изменения имени переменной p на p[0-9], и соответсвенно биндить циклом.
6 мар 07, 12:11    [3868776]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить