Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Aprendiendo sobre procedimientos almacenados (https://www.clubdelphi.com/foros/showthread.php?t=34712)

pichi Vignola 18-08-2006 14:48:18

Aprendiendo sobre procedimientos almacenados
 
Hola compañeros del foro... Gracias por la ayuda que medieron en el mensaje anterior que puse en el foro...

Me he iniciado en el mundo de Firebird y he estado aprendiendo y viendo el potencial de los procedimientos almacenados.

Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE MUESTRA_CAJA (
    RAZONSOCIAL INTEGER)
RETURNS (
    DESCRIPCION VARCHAR(40),
    FECHA DATE,
    TIPO VARCHAR(20),
    MONEDA VARCHAR(40),
    INDICE NUMERIC(15,2),
    MONTO NUMERIC(15,2),
    MONTO_TOTAL INTEGER)
AS
DECLARE VARIABLE MONEDA_V SMALLINT;
DECLARE VARIABLE TIPO_V SMALLINT;
begin
for select mov_caja.descripcion_caj,mov_caja.fecha_caj,
       mov_caja.tipo_caj,mov_caja.moneda_caj,
       mov_caja.indice_caj, mov_caja.monto_caj,
       (mov_caja.monto_caj * mov_caja.indice_caj)
from mov_caja
where mov_caja.entidad_caj=:razonsocial
into :descripcion, :fecha, :tipo_v, :moneda_v, :indice,
     :monto, :monto_total do

  /*if (:tipo_v=1) then tipo='Entrada';*/
  /* Procedure Text */
  suspend;
end
^
SET TERM ; ^
GRANT SELECT ON MOV_CAJA TO PROCEDURE MUESTRA_CAJA;
GRANT EXECUTE ON PROCEDURE MUESTRA_CAJA TO SYSDBA;

De una tabla llamada 'mov_caja' traigo los campos de cada registro y los almaceno en parametros de salida, excepto en dos variables ('tipo_v' y 'moneda_v') que mi idea es preguntar por los valores y luego en el caso de la variable 'tipo_v' que es smallint si es = 1 asignar en el parametro de salida 'tipo' que es string el valor 'Entrada' y si es = 2 el valor 'Salida'. Lo intente con un IF pero me sale un solo registro. Para que aparezca 'Entrada' o 'Salida' en cada registro como puedo hacer.

Saludos y gracias....

Lepe 18-08-2006 15:41:48

Un nimio detalle... te falta un Begin... end

Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE MUESTRA_CAJA (
    RAZONSOCIAL INTEGER)
RETURNS (
    DESCRIPCION VARCHAR(40),
    FECHA DATE,
    TIPO VARCHAR(20),
    MONEDA VARCHAR(40),
    INDICE NUMERIC(15,2),
    MONTO NUMERIC(15,2),
    MONTO_TOTAL INTEGER)
AS
DECLARE VARIABLE MONEDA_V SMALLINT;
DECLARE VARIABLE TIPO_V SMALLINT;
begin
for select mov_caja.descripcion_caj,mov_caja.fecha_caj,
       mov_caja.tipo_caj,mov_caja.moneda_caj,
       mov_caja.indice_caj, mov_caja.monto_caj,
       (mov_caja.monto_caj * mov_caja.indice_caj)
from mov_caja
where mov_caja.entidad_caj=:razonsocial
into :descripcion, :fecha, :tipo_v, :moneda_v, :indice,
     :monto, :monto_total do
begin // aqui

  if (:tipo_v=1) then tipo='Entrada'
  else
    tipo := '¿que pongo aqui?' // :D :D

  suspend;
end; // y aqui
end
^
SET TERM ; ^
GRANT SELECT ON MOV_CAJA TO PROCEDURE MUESTRA_CAJA;
GRANT EXECUTE ON PROCEDURE MUESTRA_CAJA TO SYSDBA;

Saludos


La franja horaria es GMT +2. Ahora son las 12:38:24.

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