Я отлаживаю файл sql в pgAdminIII PostgreSQL, и этот оператор создает синтаксическую ошибку при выполнении:
ERROR: syntax error at or near "v"
LINE 81384: ...n.oid = c.relnamespace WHERE c.relkind IN (\'v\') AND n...
Утверждение:
CREATE OR REPLACE FUNCTION getnextview()
RETURNS name AS
' DECLARE
my_record RECORD; viewName name;
BEGIN
FOR my_record IN
SELECT c.relname
FROM pg_catalog.pg_class AS c
LEFT JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace
WHERE c.relkind IN (\'v\')
AND n.nspname NOT IN (\'pg_catalog\', \'pg_toast\')
AND pg_catalog.pg_table_is_visible(c.oid)
LIMIT 1
LOOP
viewName := my_record.relname;
END LOOP;
RETURN (viewName);
END; ' LANGUAGE 'plpgsql' VOLATILE;
Обратите внимание, что ошибки pg_catalog и pg_toast также.