Ver Mensaje Individual
  #2  
Antiguo 26-12-2004
celades celades is offline
No confirmado
 
Registrado: may 2003
Ubicación: Torroella de Montgrí (Girona)
Posts: 42
Reputación: 0
celades Va por buen camino
Hola

Desde Interbase,Firebird con Ibexepres,Ibconsole etc

Código SQL [-]
CREATE PROCEDURE BISIESTO (
    ANYS SMALLINT)
RETURNS (
    SINO SMALLINT)
AS
DECLARE VARIABLE VALOR1 SMALLINT;
DECLARE VARIABLE VALOR2 SMALLINT;
DECLARE VARIABLE VALOR3 SMALLINT;
begin
sino=0;
SELECT SINO FROM ES_DIVISIBLE(:anys,4) INTO :VALOR1;
SELECT SINO FROM ES_DIVISIBLE(:anys,100) INTO :VALOR2;
SELECT SINO FROM ES_DIVISIBLE(:anys,400) INTO :VALOR3;
if ((:VALOR1=1) and ((:VALOR2=0) or (:VALOR3=1))) then sino=1;

suspend;
end

donde es_divisible es otro procedure

para ejecutarlo desde Delphi con un componente ibquery,fibquery,query,
storedproc etc

Código SQL [-]
select sino from bisiesto(2004)

Código SQL [-]
execute procedure bisiesto(2004) returning_values :valor

si es un procedure que no devuelve nada solo ejecuta o sea no tiene suspend

Código SQL [-]
CREATE PROCEDURE AJUSTAR_COMPTES (
    CODI_EMPRESA VARCHAR(10),
    EXERCICI INTEGER)
AS
DECLARE VARIABLE HABER NUMERIC(15,2);
DECLARE VARIABLE DEURE NUMERIC(15,2);
DECLARE VARIABLE HABER1 NUMERIC(15,2);
DECLARE VARIABLE DEURE1 NUMERIC(15,2);
DECLARE VARIABLE COMPTE VARCHAR(15);
BEGIN
for select codi,deure_inicial,haber_inicial from comptes WHERE CODI_EMPRESA=:CODI_EMPRESA AND EXERCICI=:EXERCICI order by codi into :compte,:deure,:haber do
BEGIN
  SELECT arrodonir(SUM(IMPORT),2)  FROM APUNTS WHERE CODI_EMPRESA=:CODI_EMPRESA AND EXERCICI=:EXERCICI AND deure=:compte INTO EURE1;
  SELECT arrodonir(SUM(IMPORT),2)  FROM APUNTS WHERE CODI_EMPRESA=:CODI_EMPRESA AND EXERCICI=:EXERCICI AND haber=:compte INTO :HABER1;
  /* Procedure body */
  if ((EURE<>:deure1) or (:haber<>:haber1)) then
  update comptes set deure_inicial=:deure1,haber_inicial=:haber1  WHERE CODI_EMPRESA=:CODI_EMPRESA AND EXERCICI=:EXERCICI AND codi=:compte;
END
END

solo se puede ejecutar

Código SQL [-]
execute procedure AJUSTAR_COMPTES('1',2004)
Responder Con Cita