2016-02-18 3 views
1

Я получаю эту ошибку: UnableToExecuteStatementException: Невозможно выполнить, ни один именованный параметр не соответствует «nroCotizacion» и не имеет позиционного параметра для места 0 (который равен 1 в схеме JDBC «Начало на 1») установлен ...Параметры настройки ошибки jdbi call

код:

Handle h = null; 
    try{ 
     h = dbi.open(); 
     String stmt = "{call pkg.test_procedure(:nroCotizacion,:ramo,:tipoVista,:planes)}"; 

     ResultSet rs = (ResultSet) h.createCall(stmt) 
       .bind("p_nuCotizacion", nroCotizacion) 
       .bind("p_ramo", ramo) 
       .bind("p_tipoVista",tipoVista) 
       .bind("p_subproducto",planes) 
       .registerOutParameter("v_titulos", OracleTypes.CURSOR) 
       .registerOutParameter("v_datos", OracleTypes.CURSOR) 
       .invoke(); 

     List<TituloCoberturaBeneficioTO> titulos = new ArrayList<TituloCoberturaBeneficioTO>(); 
     ResultSet rs2 = (ResultSet)rs.getObject("v_titulos"); 
     while(rs2.next()){ ...... 

я не знаю, что это неправильно, я новичок с jdbi.

ответ

0

Имена параметров привязки должны соответствовать списку параметров в инструкции. Например:

ResultSet rs = ... 
... 
.bind("nroCotizacion", nroCotizacion) 
... 

Удалить префикс p_ из ваших обязательных имен параметров или изменить инструкцию, чтобы использовать префикс p_.

+0

но параметр в статусе должен быть nroCotizacion или «p_nuCotizacion»? – ernstr

+0

Извините, у меня была опечатка в моем ответе изначально. Не имеет значения, какой идентификатор вы используете, если он соответствует в инструкции и когда вы связываете свои переменные в вызове 'bind'. В настоящий момент: ': nroCotizacion' находится в сообщении, но ' p_nuCotizacion' находится в сообщении. – Pedantic

+0

спасибо, что хорошо. Теперь у меня есть эта ошибка: SQLException: недопустимый тип столбца для p_subproducto в java - это String [], а y my db - xmltype. как я могу это установить? – ernstr

Смежные вопросы