![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
gracias por la respuesta, es mucho mas comodo utilizar ese componente (no sabia que existia), ahora tengo otro problema: cuando hago el ExecProc me devuelve el siguiente error:
"One or more errors occurred during processing of command" El codigo es este: //cargo los valores de entrada del procedimiento proc->Parameters->ParamByName("aaa")->Value = xxx; proc->Parameters->ParamByName("bbb")->Value = xxx; proc->Parameters->ParamByName("ccc")->Value = xxx; proc->Parameters->ParamByName("ddd")->Value = xxx; proc->Parameters->ParamByName("eee")->Value = xxx; //ejecuto el procedimiento proc->Prepared = true; proc->ExecProc(); //luego recogeria el dato que devuelve el procedure ... |
|
#2
|
||||
|
||||
|
Cita:
Detesto ADO... no lo uso mas que cuando sea necesario, precisamente por esto: sus mensajes de error no son nada claros. Lamento no ser de mucha ayuda. Lo que se me ocurre es probar en el SQL*Plus la ejecución del procedimiento directamente usando los parámetros con los que se invoca desde delphi, y si hay información de estado en el contexto (sesión, valores en tablas, etc.), pues que el estado también sea el mismo. Esto porque es MUY probable que se esté elevando una excepción desde el propio Oracle, pero que ADO se trague el mensaje de error original y lo sustituya por uno propio. (no es la primera vez que lo haría). Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
|||
|
|||
|
Pues no, mucho no me aclara ese error no. De todos modos gracias por la respuesta. Voy a seguir mirando de donde puede venir el fallo y cuando lo solucione lo comento aqui. Un saludo.
|
|
#4
|
|||
|
|||
|
bueno el TADOStoredProc me esta dando unos problemillas asi que estoy intentando ejecutar el procedimiento desde consultas "a mano".
El tema es que no controlo mucho de PL SQL y no se como recoger el parametro de salida del procedimiento... Tengo algo asi: (codigo c++) Código:
consulta = new TADOQuery(NULL);
consulta->Connection = ADOConnection1;
consulta->SQL->Add("declare codigo number; begin nombre_procedimiento(100,1,1,1,1,codigo); end; ");
consulta->Prepared = true;
consulta->ExecSQL();
.....
parametro 'codigo'. Ahora lo que necesito es recuperar ese valor y guardarlo en una variable int (por ejemplo) en mi aplicacion y no se como... |
|
#5
|
||||
|
||||
|
mmm.. francamente no creo que sea posible de esta manera, pues la variable se crea dentro del bloque anónimo de PL/SQL y existe solamente en el contexto de su ejecución. Dicha ejecución ya ha terminado cuando el control vuelve a Delphi.
Quizás funcione usando un parámetro. Estos se declaran con el signo de dos puntos.
Francamente no tengo idea si funcionará... Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 21-12-2007 a las 20:31:55. |
|
#6
|
|||
|
|||
|
Gracias jachguate por todas tus respuestas.
Bueno pues habra que volver a pelearse con el TADOStoredProc... estoy intentando partir de un ejemplo mas sencillo: tengo un proc almacenado que no tiene parametros de entrada, simplemente devuelve un numero (que se incrementa cada vez que se invoca el p.a.) el procedimiento se ejecuta bien pero no logro recoger el dato de vuelta... Cuerpo del procedimiento (de sql server en este caso): begin transaction update tabla_xxx set valor = valor + 1 where nombre = 'xxx' select valor from tabla_xxx where nombre = 'xxx' commit Como hago para recoger ese dato? Con un TADOQuery hago algo asi: String respuesta = consulta->Fields->operator [](0)->AsString; como hago desde el TADOStoredProc? Gracias. |
|
#7
|
||||
|
||||
|
¿esto está dentro de un stored procedure?
Si es así, al poner el nombre, automáticamente el componente debiera "crear" los parámetros de entrada y salida del mismo. Podes comprobarlo haciendo clic en el botón de los puntos suspensivos de la propiedad Params en el inspector de objetos. A dichos parámetros y sus propiedades tenes acceso mediante la propiedad "Params" del componente StoredProc. Podes obtener individualmente el valor de un parámetro específico así:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Llamada a Procedimiento Almacenado desde dentro de un Thread | MontarazAE | MS SQL Server | 2 | 29-05-2007 17:46:34 |
| Problema con la llamada a un Procedimiento almacenado | Choclito | Firebird e Interbase | 3 | 06-12-2005 19:00:27 |
| Ayuda, como llamar a un procedimiento desde otro procedimiento? | Ariatna | Varios | 1 | 01-02-2005 04:05:35 |
| LLamada a un Procedimiento de un Paquete de Oracle | samuvk | JAVA | 11 | 18-05-2004 13:04:36 |
| Insertar un array en un procedimiento de Oracle con JDBC | samuvk | JAVA | 2 | 17-05-2004 17:59:48 |
|