• Domingo 22 de Diciembre de 2024, 07:02

Autor Tema:  Problemas Con Una Funcion De Oracle Desde .net  (Leído 2499 veces)

colacao

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Problemas Con Una Funcion De Oracle Desde .net
« en: Miércoles 20 de Junio de 2007, 14:08 »
0
Buenas,

Estoy desarrollando una aplicación que trabaja con Oracle. Mi problema es el siguiente:

Tengo una función de oracle que retorna un tipo de dato compuesto.
El problema es que no se como debo hacer para obtener el resultado de la consulta.

A continuación os muestro el tipo de dato creado en oracle y la funcion de oracle con la que trabajo. Tanto la función como el tipo de dato me los han enviado y tengo que trabajar con esos en concreto.

Código: Text
  1.  
  2. create or replace type tAlumnos as object
  3. (
  4. codigo varchar2(10),
  5. codsolicitud number,
  6. campo1 varchar2(200),
  7. campo2 varchar2(200),
  8. campo3 varchar2(200),
  9. campo4 varchar2(200),
  10. campo5 varchar2(200),
  11. dni varchar2(20),
  12. nombre varchar2(50),
  13. apellido1 varchar2(50),
  14. apellido2 varchar2(50),
  15. sexo varchar2(1),
  16. fechanacimiento date,
  17. domicilio varchar2(255),
  18. numero varchar2(4),
  19. piso varchar2(6),
  20. poblacion varchar2(50),
  21. cp varchar2(6),
  22. pais varchar2(255),
  23. telefono varchar2(15),
  24. movil varchar2(15),
  25. email varchar2(255),
  26. provincia varchar2(100),
  27. resultado varchar2(1)
  28. )
  29.  
  30.  
Código: Text
  1.  
  2. create or replace function datos_alumno (cod_solicitud number) return talumnos is
  3. Necesita:
  4. Un número de solicitud
  5. Produce:
  6. Una estructura de datos con todos los campos requeridos. En esta estructura
  7. existirá
  8. un campo denominado resultado, que vale T si existe la solicitud y F en caso
  9. de
  10. haber algún error o no existir la solicitud.
  11. datos talumnos;
  12. cursor dat(cod number) is
  13. sELECT codigo,codsolicitud,campo1,campo2,campo3,campo4,campo5,
  14. dni,nombre,apellido1,apellido2,sexo,fechanacimiento,domicilio,
  15. numero,piso,poblacion,cp,pais,telefono,movil,email,provincia
  16. FROM JMCLIENTE
  17. WHERE
  18. codsolicitud=cod;
  19. begin
  20. FOR REGIs IN dat(cod_solicitud) loop
  21. datos:=talumnos(regis.codigo,regis.codsolicitud,regis.campo1,regis.campo2,regis.campo3,regis.ca
  22. mpo4,regis.campo5,regis.dni,regis.nombre,regis.apellido1,regis.apellido2,
  23. regis.sexo,regis.fechanacimiento,regis.domicilio,regis.numero,regis.piso,regis.poblacion,regis.cp,re
  24. gis.pais,regis.telefono,regis.movil,regis.email,regis.provincia,'T');
  25. return(datos);
  26. end loop;
  27. datos:=talumnos('',0,'','','','','','','','','','','',null,'','','','','','','','','','F');
  28. return (datos);
  29. exception
  30. when OTHERS THEN
  31. datos:=talumnos('',0,'','','','','','','','','','','',null,'','','','','','','','','','F');
  32. return (datos);
  33. end datos_alumno;
  34.  
  35.  

Desde .net  el código que tengo es el siguiente:
Código: Text
  1.  
  2. //Creamos un objeto command para ejecutar el procedure del package
  3. OracleCommand oracmd = new OracleCommand();
  4.  
  5. //Consulta que ejecuta la función de Oracle
  6.  
  7. oracmd.CommandText = "select datos_alumnos(1) from dual";
  8.  
  9. //Definimos que el tipo de comando a ejecutar es una consulta.
  10.  
  11. oracmd.CommandType = CommandType.Text;
  12.  
  13. //Y asignamos la conexión que previamente hemos definido y abierto.
  14.  
  15. oracmd.Connection = conexion.obtenerConexionOracleClient();
  16.  
  17.  

Y a partir de aquí ya no se como seguir para obtener el objeto que me retorna la función.

Si alguien puede echarme una mano se lo agradecería mucho.

Un saludo,

Jorge