Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Oracle
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
Invocar Store Procedure desde delphi

Hola, alguien me puede ayudar con lo siguiente:
Necesito invocar un procedimiento almacenado que esta hecho en Oracle desde delhpi, que controles debo utilizar y cual seria el codigo para invocar a este procedimiento.
Espero la pronta respuesta de algun compañero de los foros, gracias.
Responder Con Cita
  #2  
Antiguo 25-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

En primer lugar te invito en primer lugar a leer el hilo de la calidad de las preguntas.

Asumiré que usas BDE para conectarte a la base de datos. La pestaña BDE cuenta con un componente llamado TStoredProc, a este le indicas la base de datos a la que se conectará (propiedad DatabaseName) y luego pones el nombre del procedimiento almacenado en la propedad StoredProcName.

Si el procedimiento recibe parámetros, estos quedan disponibles en la propiedad Params y finalmente invocas el procedimiento con el método ExecProc.

Todo lo he dicho de memoria... a veces fallo con los nombres de métodos o propiedades, si lo hice, por favor corregime sin pena.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 25-10-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
El procedimiento es este:
create procedure sptecnologia(numcel in number)
is
tecno varchar2(10);
begin
select tecnologia into tecno from celular where numero = numcel;
dbms_output.put_line(tecno);
end;

Estoy utilizando TADOStoreProc. El codigo en delphi para invocar al mismo es este:

procedure TForm1.Button1Click(Sender: TObject);
begin
Try
sp.ProcedureName := 'SPTECNOLOGIA';
sp.FieldByName('NUMCEL').AsInteger := 098147821;
sp.ExecProc;
ShowMessage(sp.FieldByName('tecno').AsString);
Finally
sp.Free;
End;
end;


Al ejecutar me da este error:
'sp:Field 'NUMCEL' not found'

que crees que estoy haciendo mal para que me salga este error?
Responder Con Cita
  #4  
Antiguo 25-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por JuanPa1
Al ejecutar me da este error:
'sp:Field 'NUMCEL' not found'

que crees que estoy haciendo mal para que me salga este error?
Lo que pasa es que NumCel no es un campo del stored procedure, es un parámetro (en la propiedad Params).
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 25-10-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
OK, con lo que respecta a NUMCEL ya lo resolvi pero como recibo el vamol tecno que es el qe el procedimiento debe retornarme?
Responder Con Cita
  #6  
Antiguo 25-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Lo siento, pero el procedimiento que has mostrado no retorna nada. Hace una salida a la consola, pero eso no es un "retorno de valor".... es una salida a consola.

Si queres que el procedimiento retorne algo... pues poné un parámetro de salida (out) y el valor retornado por ese parámetro, luego de ejecutado el procedimiento, estará disponible de la misma manera en la propiedad params.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 25-10-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
Bueno, lo que pasa es que recien estoy practicando los procedimientos almacenados en Oracle y no conozco aun muy bien. Como deberia quedar el procedimiento para que me retorne un valor al cual yo pueda recibirlo desde delphi?
Gracias por los conocimientos que estas compartiendo en el foro...
Responder Con Cita
  #8  
Antiguo 25-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
debiera lucir así:

Código SQL [-]
create procedure sptecnologia(numcel in number, tecno out varchar2(10))
is
begin
  select tecnologia 
     into tecno 
    from celular 
  where numero = numcel;
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 25-10-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
Gracias, tu ayuda me ha servido de mucho. Ya logre invocar corectamente al procedimiento.
Responder Con Cita
  #10  
Antiguo 03-11-2006
JuanPa1 JuanPa1 is offline
Miembro
 
Registrado: may 2006
Posts: 66
Poder: 18
JuanPa1 Va por buen camino
Hola, ahora tengo este problema. El procedimiento ya lo invoca correctamente en la misma pc, pero cuando yo ejecuto la aplicacion desde una pc cliente en donde tengo instalado el cliente de Oracle me sale este error:ORA-12560:TNSrotocol adapter error.
La verdad he intentado solucionarlo siguiendo algunos consejos de algunos foros pero no logro resolverlo.
Espero que me puedas dar una idea de lo que puede estar pasando, gracias.
Responder Con Cita
  #11  
Antiguo 29-11-2006
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Hola:
Solo como "breviario cultural" el procedimiento como está diseñado se parece mucho más a una función de Oracle, puedes entonces en lugar de generarlo como Stored Procedure como Function

Digo solo por opinar
Saludos
__________________
Ernesto R.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
store procedure no puedo llamarlos desde ado..! Arturo MySQL 1 10-05-2006 01:03:56
Invocar un DLL hecho en Delphi desde Oracle juancho_juancho Conexión con bases de datos 0 08-02-2006 02:47:07
Como mandar mensaje desde delphi con un store procedure..ibx uper Firebird e Interbase 1 26-12-2005 15:21:14
Store Procedure en Delphi carlomagno Firebird e Interbase 5 21-09-2005 20:24:22
Store Procedure Delphi - SQL 2000 thecarlos MS SQL Server 4 15-07-2004 20:17:47


La franja horaria es GMT +2. Ahora son las 10:06:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi