-- ================================================================================
--   Database name :  COMISSARIA
--   Created on    :  17/04/1998  11:37
--   Programador   :  Robert Pereira
-- ================================================================================
IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
                WHERE 
	        O.NAME = 'TESTARECEITA'  AND 
	        TYPE = 'P'               AND
	        U.UID = O.UID            AND 
	        U.NAME = USER)

  DROP PROCEDURE TESTARECEITA
  GO

CREATE PROCEDURE TESTARECEITA
       /*@P_RECEITA RECEITA.CDRECEITA%TYPE,
       @P_SUBREC  RECEITA.CDRECEITA%TYPE,*/
       @P_RECEITA VARCHAR(10),
       @P_SUBREC  VARCHAR(10),
       @P_RESULT  CHAR OUTPUT
AS

DECLARE @V_ACHEI CHAR(1);
DECLARE @V_TESTA INT;
DECLARE @V_CDSUBREC VARCHAR(10);

BEGIN

  IF @P_SUBREC = @P_RECEITA
  BEGIN
     SET @V_ACHEI = 'N';
  END
  ELSE
     SET @V_ACHEI = 'S';

  IF @V_ACHEI = 'S'
  BEGIN

     SELECT @V_TESTA = COUNT(*)
     FROM RECEITACIA
     WHERE CDRECEITA = @P_SUBREC;
     
     IF @V_TESTA <> 0
     BEGIN

        DECLARE SUBRECCIA_CUR CURSOR FOR
        SELECT CDSUBREC
        FROM SUBRECCIA
        WHERE CDRECEITA = @P_SUBREC;
        OPEN SUBRECCIA_CUR;

        FETCH NEXT FROM SUBRECCIA_CUR INTO @V_CDSUBREC;

        WHILE (@@FETCH_STATUS = 0)
        BEGIN
            EXEC TESTARECEITA @P_RECEITA, @V_CDSUBREC, @P_RESULT = @V_ACHEI OUTPUT;

            FETCH NEXT FROM SUBRECCIA_CUR INTO @V_CDSUBREC;
        END;
        DEALLOCATE SUBRECCIA_CUR;


     END
     ELSE
     BEGIN

        DECLARE SUBREC_CUR CURSOR FOR
        SELECT CDSUBREC
        FROM SUBRECEITA
        WHERE CDRECEITA = @P_SUBREC
        OPEN SUBREC_CUR;

        FETCH NEXT FROM SUBREC_CUR INTO @V_CDSUBREC;

        WHILE (@@FETCH_STATUS = 0)
        BEGIN
            EXEC TESTARECEITA @P_RECEITA, @V_CDSUBREC, @P_RESULT = @V_ACHEI OUTPUT;
            FETCH NEXT FROM SUBREC_CUR INTO @V_CDSUBREC;
        END;
        DEALLOCATE SUBREC_CUR;
     END;
  END;
  SET @P_RESULT = @V_ACHEI;
END;
GO
