IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
                    WHERE
	        O.NAME = 'ATUALIZA_TIPOPACI'  AND
	        TYPE = 'P' 	              AND
	        U.UID = O.UID                 AND
	        U.NAME = USER)
  DROP PROCEDURE ATUALIZA_TIPOPACI
  GO

CREATE PROCEDURE ATUALIZA_TIPOPACI
   @P_DTDATA DATETIME,
   @P_CDFILIAL VARCHAR(4)
AS
  DECLARE @V_CDTIPOPACI VARCHAR(1);
  DECLARE @V_IDADE      NUMERIC;
  DECLARE @V_CDPACIENTE VARCHAR(12);
BEGIN

   DECLARE CUR_PACIENTE CURSOR FOR
      SELECT
         CONVERT(NUMERIC, DATEDIFF(YYYY, DTNASCPACI, @P_DTDATA)),
         CDPACIENTE
      FROM
         PACIENTE
      WHERE
         (IDTIPOPACI <= '4')OR
         (IDTIPOPACI IS NULL) AND
         (CDFILIAL = @P_CDFILIAL);

   OPEN CUR_PACIENTE;

   FETCH NEXT FROM CUR_PACIENTE INTO @V_IDADE, @V_CDPACIENTE;

   WHILE (@@FETCH_STATUS = 0) BEGIN

      IF @V_IDADE <= 0.11 BEGIN
         SET @V_CDTIPOPACI = 0;
      END
      ELSE BEGIN
         IF @V_IDADE >= 1 AND @V_IDADE <= 9.11 BEGIN
            SET @V_CDTIPOPACI = 1;
         END
         ELSE BEGIN
            IF @V_IDADE >= 10 AND @V_IDADE <= 18.11 BEGIN
               SET @V_CDTIPOPACI = 2;
            END
            ELSE BEGIN
               IF @V_IDADE >= 19 AND @V_IDADE <= 64.11 BEGIN
                  SET @V_CDTIPOPACI = 3;
               END
               ELSE BEGIN
                  IF @V_IDADE >= 65 BEGIN
                     SET @V_CDTIPOPACI = 4;
                  END;
               END;
            END;
         END;
      END;

      UPDATE PACIENTE
      SET IDTIPOPACI = @V_CDTIPOPACI
      WHERE(CDPACIENTE = @V_CDPACIENTE) AND
           (CDFILIAL   = @P_CDFILIAL  );

      FETCH NEXT FROM CUR_PACIENTE INTO @V_IDADE, @V_CDPACIENTE;
   END;
   CLOSE CUR_PACIENTE;
   DEALLOCATE CUR_PACIENTE;
END;
GO

