Foros del Web » Programación para mayores de 30 ;) » Java »

Error al llamar PL/SQL desde Java

Estas en el tema de Error al llamar PL/SQL desde Java en el foro de Java en Foros del Web. Hola amigos tengo un procedimiento en Oracle con el siguiente codigo create or replace function numer_artic_s (p_idclient in varchar2) return number as numero integer; begin ...
  #1 (permalink)  
Antiguo 30/12/2007, 19:44
 
Fecha de Ingreso: octubre-2006
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 1
Error al llamar PL/SQL desde Java

Hola amigos tengo un procedimiento en Oracle con el siguiente codigo

create or replace
function numer_artic_s (p_idclient in varchar2) return number as
numero integer;
begin
select count(id_client) into numero
from venta
where id_client=p_idclient;
return numero;
end;

si lo llamo desde oracle de esta manera me funciona:

DECLARE
P_IDCLIENT VARCHAR2(200);
v_Return NUMBER;
BEGIN
P_IDCLIENT := 'MaBo01';

v_Return := NUMER_ARTIC_S(
P_IDCLIENT => P_IDCLIENT
);
DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
END;

ahora lo llamo desde java de la siguiente manera:

public int consulta100(String cliente1){
int numero=0;
try {
CallableStatement sentenciaPreparada=conexion.prepareCall("{call numer_artic_s(?)}");
sentenciaPreparada.setString(1,cliente1);
sentenciaPreparada.executeQuery();
numero=sentenciaPreparada.getInt("numero");
System.out.println(numero);
} catch (SQLException e) {
System.err.println("Error al ejecutar la consulta: "+e.getMessage());
}
return numero;
}

y me da el siguiente error:

Error al ejecutar la consulta: ORA-06550: línea 1, columna 7:
PLS-00221: 'NUMER_ARTIC_S' no es un procedimiento o no se ha definido
ORA-06550: línea 1, columna 7:
PL/SQL: Statement ignored

Alguien sabe donde esta el problema?? es que es la primera vez que quiero llamar desde java a un plsql y en oracle funciona pero en java no, y no se donde esta el problema.

gracias
  #2 (permalink)  
Antiguo 30/12/2007, 20:01
 
Fecha de Ingreso: octubre-2006
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Error al llamar PL/SQL desde Java

ya esta solucionado, para el que lo necesite

el problema era a la hora de llamar en el codigo java, he mirado otro post de este foro y con este codigo funciona

CallableStatement sentenciaPreparada=conexion.prepareCall("{?=call numer_artic_s(?)}");
sentenciaPreparada.registerOutParameter(1, Types.VARCHAR);
sentenciaPreparada.setString(2,cliente1);
sentenciaPreparada.executeQuery();
numero=sentenciaPreparada.getInt(1);
System.out.println(numero);

gracias por hacer este foro cada dia mas grande
un saludo
  #3 (permalink)  
Antiguo 31/12/2007, 07:55
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Error al llamar PL/SQL desde Java

Para acabar de informar, el problema era que numer_artic_s es una función y no un procedimiento. Y PLSQL es muy estricto en cuanto a los parametros, tipos de retorno etc. Así que para poder llamar a una funcion, has de asignarle una variable para el valor de retorno, como haces en el segundo caso.

PLSQL es muy quisquilloso .
S!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:19.