Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con store procedure (https://www.clubdelphi.com/foros/showthread.php?t=71149)

Pedro Nel Ortiz 03-12-2010 16:48:06

Problema con store procedure
 
Hola Buenos días...

Tengo un inconveniente con un store procedure cuando ejecuto este por firebird o por delphi el valor que me arroja es null este es el store procedure.

gracias si me pueden ayudar porque ya vi por todos lados y no se cual es el inconveniente ...

Código SQL [-]
CREATE PROCEDURE P_VR_INCAPACIDAD (
  COMP_BAS Double Precision, 
  DIAS_INCAP Double Precision)
 returns (
  VR_INCAP Double Precision)
AS

begin
  VR_INCAP=(COMP_BAS/30)*DIAS_INCAP;
end ^^

ecfisa 03-12-2010 19:07:41

Hola pedro.

Probá de este modo:
Código SQL [-]
CREATE PROCEDURE P_VR_INCAPACIDAD(COMP_BAS DOUBLE PRECISION, DIAS_INCAP DOUBLE PRECISION)
RETURNS (VR_INCAP DOUBLE PRECISION)
AS
BEGIN
  VR_INCAP = CAST((COMP_BAS/30) * DIAS_INCAP AS DOUBLE PRECISION);
END

Saludos . :)

Pedro Nel Ortiz 03-12-2010 19:39:17

Error Store procedure
 
Gracias por responder:

Lo intente creandolo como me dijo, pero igual me sigue sin realizar la operacion

no se si es inconveniente cuando ejecuto el store procedure

lo hago con la siguiente linea:

Execute procedure p_vr_incapacidad 1,2

y la respuesta por parte del ibconsole y en delphi es un parametro nulo

probe con el work bench que es una herramienta para administracion de bases de datos firebird y en este si me da respuesta de lo que necesito, pero al realizarlo en delphi 2007 o por sql atravez del ibconsolo la respuesta continua siendo nula

alguna otra sugerencia????

maeyanes 03-12-2010 20:27:31

Hola...

Te hace falta la palabra reservada suspend:

Código SQL [-]
CREATE PROCEDURE P_VR_INCAPACIDAD(COMP_BAS DOUBLE PRECISION, DIAS_INCAP DOUBLE PRECISION)
RETURNS (VR_INCAP DOUBLE PRECISION)
AS
BEGIN
  VR_INCAP = CAST((COMP_BAS/30) * DIAS_INCAP AS DOUBLE PRECISION);
  SUSPEND;
END


Saludos...

Casimiro Notevi 03-12-2010 20:44:42

Cita:

Empezado por Pedro Nel Ortiz (Mensaje 383962)
Execute procedure p_vr_incapacidad 1,2

También supongo que lo pones entre paréntesis: p_vr_incapacidad(1,2)

Pedro Nel Ortiz 03-12-2010 21:01:04

aun Sigue mostrandome el null
 
Hola de nuevo ...
volvi a crear el stored procedure con la palabra suspend.... pero cuando lo ejecuto no me arroja el valor de la operacion, sigue saliendo null


gracias

maeyanes 03-12-2010 21:08:06

Hola...

Para obtener un valor desde el procedure hay dos formas:

Via un select
Código SQL [-]
select * from P_VR_INCAPACIDAD(1, 2)

vía execute procedure
Código SQL [-]
execute procedure P_VR_INCAPACIDAD 1, 2
returning_values :variable

A lo mejor el problema está ahí...

Si no, verificar que los valores que mandas como parámetro no produzcan un error y es por eso que no te devuelve nada el procedimiento...


Saludos...

Pedro Nel Ortiz 03-12-2010 21:20:31

LISTO GRACIAS EFECTIVAMENTE ERA LA FORMA COMO SE REALIZA LA CONSULTA, NO ME SABIA LO DEL SELECT...

PARA FUTURAS PERSONAS QUE TENGAN ESTE INCONVENIENTE LO QUE HAY QUE HACER EN DELPHI ES CREAR UN QUERY MAS O MENOS ASI:

select VR_INCAP from P_VR_INCAPACIDAD(:UNO,:DOS)

Y AL MOMENTO DE EJECUCION PASAR LOS PARAMETROS

MUCHAS GRACIAS A TODOS POR SU TIEMPO Y SU INCONDICIONAL AYUDA !!!


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

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