neste caso resolvi ter como parametro de entrada a tabela e o nome do campo, mas se vc quiser é só tirar estes parametros.
CREATE PROCEDURE SP_ALTERA_PARA_MAISCULO
AS
DECLARE VARIABLE STRINGSQL VARCHAR(1000);
DECLARE VARIABLE VCAMPO VARCHAR(100);
DECLARE VARIABLE VTABELA VARCHAR(100);
begin
FOR
SELECT CAMPOS.RDB$RELATION_NAME, CAMPOS.RDB$FIELD_NAME
FROM RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS DADOSCAMPO, RDB$TYPES TIPOS
WHERE TABELAS.RDB$RELATION_NAME = CAMPOS.RDB$RELATION_NAME AND CAMPOS.RDB$FIELD_SOURCE = DADOSCAMPO.RDB$FIELD_NAME AND
DADOSCAMPO.RDB$FIELD_TYPE = TIPOS.RDB$TYPE AND TIPOS.RDB$FIELD_NAME = ‘RDB$FIELD_TYPE’ AND TIPOS.RDB$TYPE_NAME = ‘VARYING’ AND TABELAS.RDB$SYSTEM_FLAG = 0
INTO :VTABELA, :VCAMPO
DO
BEGIN
STRINGSQL = ”;
STRINGSQL = ‘ UPDATE ‘ || VTABELA;
STRINGSQL = STRINGSQL || ‘ SET ‘ || VCAMPO || ‘ = UPPER(‘ || VCAMPO || ‘)’;
EXECUTE STATEMENT STRINGSQL;
END
/* Procedure Text */
suspend;
end
