Executor de SQL e DML
Como cria uma procedure/function de banco utilizando o UTL_DB_DQL?
RTDBUT.UTL_DB_SQL.FAQ-40540
Para criar uma função de banco pela ferramenta RTDBUT.UTL_DB_SQL, é necessário ter o cuidado de não terminar nenhuma linha com ";" a não ser que seja a linha que encerra o comando de criação do mesmo, ou seja, deve-se deslocar os ";" do código do procedimento ou função de banco para o início da linha seguinte ou emendar os trechos de forma a evitar que a linha termine com ";":
Exemplo:
Ao invés de escrever assim,
CREATE OR REPLACE FUNCTION show_cities() RETURNS refcursor AS $$
DECLARE
ref refcursor;
BEGIN
OPEN ref FOR SELECT city, state FROM cities;
RETURN ref;
END;
$$ LANGUAGE plpgsql;
Deve-se escrever assim:
CREATE OR REPLACE FUNCTION show_cities() RETURNS refcursor AS $$
DECLARE ref refcursor; BEGIN
OPEN ref FOR SELECT city, state FROM cities
; RETURN ref
; END
; $$ LANGUAGE plpgsql;