Problema con procedimientos almacenados
Publicado por Felix (1 intervención) el 20/08/2010 11:48:44
Muy buenas:
Al intentar ejecutar un procedimiento almacenado, me da el siguiente error: "Ordinal binding and Named binding cannot be combined!"
Mi código donde ejecuto el proc es el siguiente:
String error = "";
final Date fecha = new Date();
CallableStatement cs = null;
try {
cs = con.prepareCall("?={call insertTraza (?,?, ?, ?)}");
// Cargamos los parametros de entrada IN
cs.setInt("idTraza", 1);
cs.setString("idZona", idzona);
cs.setString("idUsuario", idusuario);
final java.sql.Date fechaActual = new java.sql.Date(fecha.getTime());
cs.setDate("fecha", fechaActual);
// Registramos los parametro de salida OUT
cs.registerOutParameter("error", java.sql.Types.VARCHAR);
// Ejecutamos
cs.execute();.....
El mapping del proc es:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="es.cne.everest.hibernate.dto">
<class name="TrazaWebProc" table="TA_TRAZA_WEB" >
<id name="idTraza" column="ID_TRAZA" type="java.lang.Integer" />
<property name="idZona" column="ID_ZONA" generated="never" lazy="false" type="string"/>
<property name="idUsuario" column="ID_USUARIO" generated="never" lazy="false" type="string"/>
<property name="fechatraza" column="FECHA_TRAZA" generated="never" lazy="false" type="java.sql.Date"/>
<sql-update callable="true">{call insertTraza (?,?, ?, ?)}</sql-update>
</class>
</hibernate-mapping>
Y el proc es:
FUNCTION insertTraza (idTraza in number, idZona IN varchar2, idUsuario IN VARCHAR2, fecha IN Date)
RETURN varchar2 IS
strError VARCHAR2(1000);
BEGIN
insert into TA_TRAZA_WEB (ID_Traza,ID_ZONA,ID_USUARIO,FECHA_TRAZA) VALUES (idTraza, idZona, idUsuario,fecha );
EXCEPTION
WHEN OTHERS THEN
strError := 'ERROR ' || SQLERRM;
RETURN strError;
RAISE;
END insertTraza;
¿Dónde está el fallo?
Al intentar ejecutar un procedimiento almacenado, me da el siguiente error: "Ordinal binding and Named binding cannot be combined!"
Mi código donde ejecuto el proc es el siguiente:
String error = "";
final Date fecha = new Date();
CallableStatement cs = null;
try {
cs = con.prepareCall("?={call insertTraza (?,?, ?, ?)}");
// Cargamos los parametros de entrada IN
cs.setInt("idTraza", 1);
cs.setString("idZona", idzona);
cs.setString("idUsuario", idusuario);
final java.sql.Date fechaActual = new java.sql.Date(fecha.getTime());
cs.setDate("fecha", fechaActual);
// Registramos los parametro de salida OUT
cs.registerOutParameter("error", java.sql.Types.VARCHAR);
// Ejecutamos
cs.execute();.....
El mapping del proc es:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="es.cne.everest.hibernate.dto">
<class name="TrazaWebProc" table="TA_TRAZA_WEB" >
<id name="idTraza" column="ID_TRAZA" type="java.lang.Integer" />
<property name="idZona" column="ID_ZONA" generated="never" lazy="false" type="string"/>
<property name="idUsuario" column="ID_USUARIO" generated="never" lazy="false" type="string"/>
<property name="fechatraza" column="FECHA_TRAZA" generated="never" lazy="false" type="java.sql.Date"/>
<sql-update callable="true">{call insertTraza (?,?, ?, ?)}</sql-update>
</class>
</hibernate-mapping>
Y el proc es:
FUNCTION insertTraza (idTraza in number, idZona IN varchar2, idUsuario IN VARCHAR2, fecha IN Date)
RETURN varchar2 IS
strError VARCHAR2(1000);
BEGIN
insert into TA_TRAZA_WEB (ID_Traza,ID_ZONA,ID_USUARIO,FECHA_TRAZA) VALUES (idTraza, idZona, idUsuario,fecha );
EXCEPTION
WHEN OTHERS THEN
strError := 'ERROR ' || SQLERRM;
RETURN strError;
RAISE;
END insertTraza;
¿Dónde está el fallo?
Valora esta pregunta


0