Procedure que Apaga Registros e Zera os Generators no Firebird.

SET SQL DIALECT 3;
SET NAMES ISO8859_1;

SET TERM ^ ;
CREATE PROCEDURE SP_LIMPAR_TABELAS
AS
BEGIN
EXIT;
END^
SET TERM ; ^

SET TERM ^ ;
ALTER PROCEDURE SP_LIMPAR_TABELAS
AS
DECLARE VARIABLE NOME_OBJETO VARCHAR(80);
DECLARE VARIABLE VSQL VARCHAR(256);
begin
FOR
SELECT DISTINCT t.RDB$RELATION_NAME TABELA
FROM RDB$USER_PRIVILEGES t
WHERE t.RDB$RELATION_NAME NOT LIKE ‘RDB$%’ AND
t.RDB$OBJECT_TYPE=0
ORDER BY 1
INTO :nome_objeto
DO
BEGIN
VSQL = ‘DELETE FROM ‘ :nome_objeto;
EXECUTE STATEMENT VSQL;
END

FOR SELECT g.RDB$GENERATOR_NAME
FROM RDB$GENERATORS g
WHERE (g.RDB$GENERATOR_NAME NOT LIKE ‘RDB$%’) AND
(g.RDB$GENERATOR_NAME NOT LIKE ‘SQL$%’)
INTO :nome_objeto
DO
BEGIN
VSQL = ‘SET GENERATOR ‘ :nome_objeto ‘ TO 0’;
EXECUTE STATEMENT VSQL;
END

end