Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Procedimientos almacenados y parámetros (https://www.clubdelphi.com/foros/showthread.php?t=70565)

r1d2m3 28-10-2010 17:55:40

Procedimientos almacenados y parámetros
 
Hola colegas, estoy intentando desarrollar un procedimiento almacenado en mysql server para luego consumir sus datos desde una aplicación delphi y me encuentro con el siguiente problema, no logro pasarle desde el código, el parámetro que está esperando el proc. almacenado. les muestro un poquito los códigos que estoy usando para ver si pueden ayudarme con este tema.

Código del procedimiento almacenado
Código SQL [-]
DELIMITER //

CREATE DEFINER=`root`@`localhost` PROCEDURE `sproc_listMovCarpe`(varIdCarpe integer)
BEGIN
    SELECT tabtiposmov.DescripMov AS TipMov, 
    tabmaemovimientos.DescripMov AS DescMov, 
    tabmaemovimientos.fecha AS FecMov, 
    tabcaractermov.descCaracter AS CaracterMov
    FROM (tabmaemovimientos LEFT JOIN tabtiposmov ON tabmaemovimientos.tipMov = tabtiposmov.codMovim) 
    LEFT JOIN tabcaractermov ON tabmaemovimientos.caracterMov = tabcaractermov.codCaracter
    WHERE idCarpe = varIdCarpe;
END//

como pueden ver en este código, es muy sencillo, necesito obtener
un listado parametrizado por el número de id de una carpeta que vendrá
informado en el parámetro varIdCarpe

y este es el código que estoy usando en Delphi

Código Delphi [-]

  function SPListMovimCarpe(varConexBD:TADOConnection; varIdCarpe:Integer) : _Recordset;
  var
    consu:_Recordset;
    sproc:TADOCommand;
  begin
    sproc:=TADOCommand.Create(nil);
    sproc.Connection := varConexBD;
    sproc.CommandType:=cmdStoredProc;
    sproc.Parameters.ParamByName('@varIdCarpe').Value:=varIdCarpe;
    sproc.CommandText := 'sproc_listMovCarpe';
    consu :=sproc.Execute;
    Result:=consu;
  end;

cuando debagueo este código, me tira un error que dice:
...Parameter '@varIdCarpe' not found, y no comprendo donde está el problema, ya que como pueden ver, en la definición del sp si estoy definiendo el parámetro, me queda la duda de si me falta declarar el parámetro dentro del objeto sproc:TADOCommand, si es así, no puedo dar con la sintaxis necesaria, veo en la ayuda la siguiente instrucción: Parameters.CreateParameter() para crear un parámetro pero igual me sigue tirando errores.

Por favor, si alguien ya se vió con este problema y lo pudo solucionar, le agradeceré enormemente su ayuda.

Muchas gracias y saldudos a todos.

aposi 28-10-2010 18:20:14

has intentado de quitar la @?

Código:

Código Delphi [-]sproc.Parameters.ParamByName('varIdCarpe').Value:=varIdCarpe;

r1d2m3 28-10-2010 18:24:44

si, lanza el mismo error.

rgstuamigo 28-10-2010 22:01:25

Segun veo estas usando componentes de la paleta ADO, pues entonces por que no usas un ADOQuery en lugar del ADOCommand y puedes llamar atu procedimiento almacenado tal como se indica en éste hilo.;)
Saludos...:)

r1d2m3 28-10-2010 22:21:56

perfecto, gracias por el hilo, funciona como lo necesito.

Nuevamente gracias y saludos.


La franja horaria es GMT +2. Ahora son las 11:40:07.

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