我收到此错误:无法执行语句异常:无法执行,没有与"nroCotizacion"匹配的命名参数,并且没有设置位置 0(JDBC "从 1 开始"方案中为 1)的位置参数...
代码为:
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的新手。
绑定参数名称必须与语句中的参数列表匹配。 例如:
ResultSet rs = ...
...
.bind("nroCotizacion", nroCotizacion)
...
从绑定参数名称中删除p_
前缀,或修改语句以使用 p_
前缀。