Firebird - Funcao Ocorre

Top  Previous  Next

SET TERM ^ ;

 

CREATE PROCEDURE SP_OCORRE (

    I_TEXTO VARCHAR(24000),

    I_SEPARADOR VARCHAR(1))

RETURNS (

    R_VEZES INTEGER)

AS

DECLARE VARIABLE L_TAMANHO INTEGER;

DECLARE VARIABLE L_POSICAO INTEGER;

DECLARE VARIABLE L_CARAC VARCHAR(1);

BEGIN

  R_VEZES = 0;

  L_POSICAO = 0;

  L_TAMANHO = STRLEN(I_TEXTO);

  WHILE (L_POSICAO <= L_TAMANHO) DO

  BEGIN

    L_POSICAO = L_POSICAO + 1;

    L_CARAC = SUBSTR(I_TEXTO, L_POSICAO, L_POSICAO);

    IF (L_CARAC = I_SEPARADOR) THEN

    BEGIN

      R_VEZES = R_VEZES + 1;

    END

  END

  SUSPEND;

end^

 

SET TERM ; ^

 

GRANT EXECUTE ON PROCEDURE SP_OCORRE TO SYSDBA;