Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2010
Avatar de julyus
julyus julyus is offline
Miembro
 
Registrado: jul 2006
Ubicación: IN TO PLACES COLOMBIA AND EE.UU
Posts: 121
Poder: 18
julyus Va por buen camino
pregunta sobre storeprocedures y delphi

tengo una duda quiero llamar un store procedure que debo enviarle dos parametros a y b y este me debe regresar B y C

uso ado para conectarme para conectrame mi pregunta es puesdo usar un ado query o debo usar un tadostoredproc

si tienen codigo explicativo coomo envio las variables y como las tomo cnuado regresan mil gracias
Responder Con Cita
  #2  
Antiguo 25-08-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
De las dos formas deberia poderse...

Este codigo no esta probado...Los tipos de datos no representan la realidad
Código Delphi [-]
Var
valor_retorno_1, valor_retorno_2:Integer;
begin
adoQuery.Close;
adoQuery.SQL.Clear;
adoQuery.SQL.Text:='SELECT VAR_1, VAR_2 FROM TU_PROCEDURE(:Param1, :Param2');
adoQuery.ParamByName('PARAM1').AsString:='Valor_Parametro_1';
adoQuery.ParamByName('PARAM2').AsString:='Valor_Parametro_2';
adoQuery.Open;

{Para recuperar los valores de los campos de retorno...}
valor_retorno_1:=adoQuery.FieldByName('VAR_1').AsInteger;
valor_retorno_2:=adoQuery.FieldByName('VAR_2').AsInteger;

adoQuery.Close;
end;
Responder Con Cita
  #3  
Antiguo 26-08-2010
Avatar de julyus
julyus julyus is offline
Miembro
 
Registrado: jul 2006
Ubicación: IN TO PLACES COLOMBIA AND EE.UU
Posts: 121
Poder: 18
julyus Va por buen camino
Question hola encontre esto pero no se como funciona

encontre esto pero no entiendo esto de pdInputOutput
Código Delphi [-]
EvenType : string;
EvenCode  : string;
begin

  Conn := ConnPool.GetConnection;
  // consulto datos
  if  iCurrSpeed = 0 then
  begin

  //ejecuto el storeprocedure
  ADOSP.Connection := Conn.Connection; // paso el string de conexion
  ADOSP.ProcedureName := 'GetOverSpeed'; // pongo el nombre del SP que voy a utilizar
  ADOSP.Parameters.Refresh; // creo los parametros que espera el SP
  ADOSP.Parameters.ParamByName('@CompanyId').Value  := iCompanyId;
  ADOSP.Parameters.ParamByName('@CarNumber').Value  := sVehicleId;
  ADOSP.Parameters.ParamByName('@Speed').Value  := iCurrSpeed;
  ADOSP.Parameters.ParamByName('@EventType').Direction := pdInputOutput;
  ADOSP.Parameters.ParamByName('@EventCode').Direction :=  pdInputOutput;
  ADOSP.Open;

  end;
  ADOSP.Close;
  ADOSP.Free;
Responder Con Cita
  #4  
Antiguo 26-08-2010
Avatar de julyus
julyus julyus is offline
Miembro
 
Registrado: jul 2006
Ubicación: IN TO PLACES COLOMBIA AND EE.UU
Posts: 121
Poder: 18
julyus Va por buen camino
Question duas dudas ???

mi duda es conrespecto que necesito los valores que me regrese
para pasarlos a sus respectivas variables var1 var3 ???

Código Delphi [-]
ADOSP.Parameters.ParamByName('@EventType').Direction := pdInputOutput;
ADOSP.Parameters.ParamByName('@EventCode').Direction :=  pdInputOutput;
Responder Con Cita
  #5  
Antiguo 26-08-2010
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 132
Poder: 19
Alejandro73 Va por buen camino
si tienes el procedimiento almacenado en el motor, defines las variables que necesitas de salida como ej @mivariable1 INT OUTPUT; cuando llamas al procedimiento almacenado debes pasar estos valores y una vez que lo ejecutas preguntas por el valor que trae ese campo referenciando al numero de posicion que tiene el parametro, recuerda que estos van desde cero en adelante y seri mas o menos asi

if dm.adopa_miprocedimiento.parameters[1].value=condicion
then .....
else ....

espero te sirva

Saludos
Alejandro Arancibia
CHILE
__________________
Los muertos en CRISTO de sus tumbas volveran y los que vivimos en las nubes nos levantara .......
Responder Con Cita
  #6  
Antiguo 29-08-2010
Avatar de TheJHorse
TheJHorse TheJHorse is offline
Miembro
 
Registrado: dic 2005
Posts: 13
Poder: 0
TheJHorse Va por buen camino
SQL: base de datos "db_prueba"
La tabla
Código SQL [-]
CREATE TABLE tbl_persona
(
  codigo INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  nombre VARCHAR(25)
)

un storeprocedure para registrar personas
Código SQL [-]
CREATE PROCEDURE spNuevaPersona
  @vcNombre VARCHAR(25),
  @iRetorno INT OUTPUT
AS
  INSERT INTO tbl_persona (nombre) VALUES (@vcNombre)
  
  SET @iRetorno = @@IDENTITY -- Retornamos el codigo de la persona
GO

En Delphi
Código Delphi [-]
acConeccion: TADOConnection;
spProcedimiento: TADOStoredProc;
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  iResultado: Integer;
begin
  acConeccion.ConnectionString := 'Provider=SQLNCLI.1;Persist Security Info=False;User ID=USUARIO;Password=PASSWORD;Initial Catalog=db_prueba;Data Source=.';

  try
    acConeccion.Open();
  except
    Application.Terminate();
  end;

  spProcedimiento.Close;
  spProcedimiento.Prepared := false;
  spProcedimiento.ProcedureName := 'spNuevaPersona';
  spProcedimiento.Parameters.Refresh;

  spProcedimiento.Parameters.ParamByName('@vcNombre').Value := 'Angeluz';
  spProcedimiento.Parameters.ParamByName('@iRetorno').Value := 0;
  spProcedimiento.Prepared := true;
  spProcedimiento.ExecProc();

  iResultado := spProcedimiento.Parameters.ParamByName('@iRetorno').Value;

  acConeccion.Close();

  Application.MessageBox(PChar('Codigo generado: ' + IntToStr(iResultado)), 'Resultado', 0);
end;
__________________
PhC Rulez
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
Pregunta Teórica Sobre Compilación en Delphi 7 nlsgarcia Varios 1 26-03-2007 22:12:40
Pregunta teórica sobre el tipo Record en DLLs en Delphi 7 nlsgarcia Varios 2 02-03-2007 03:05:41
Una Pregunta sobre Librerias de Funciones Matemáticas y Estadísticas para Delphi nlsgarcia Varios 2 24-02-2007 14:17:14
pregunta sobre rave + delphi gustavoh Impresión 3 13-09-2005 02:33:44
ADOConection.CommitTrans con StoreProcedures... Cabanyaler SQL 2 17-07-2003 08:44:03


La franja horaria es GMT +2. Ahora son las 08:13:08.


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