В мае 2010 года Аарон и Хеннинг предоставили код для регистрации функции, которая при последующем вызове с параметром для имени пользователя усекала бы все таблицы.Он отлично работал с postgres в Windows 7. К сожалению, ни одна из них не будет работать для postgres 8.3 в Ubuntu.
An error has occurred:
ERROR: syntax error at or near "$1"
LINE 1: $1
^
QUERY: $1
CONTEXT: SQL statement in PL/PgSQL function "truncate_tables" near line 6
Я также попытался упростить оператор select, чтобы сосредоточиться на предложении BEGIN For, удалив сложное предложение WHERE.Я использовал в Windows.
Вы видите проблему здесь?Благодарю.Он не может передать или прочитать имена таблиц после их получения?Разве проблема с $ 1 не означает, что он не может найти свой ввод?
DECLARE
stmt RECORD;
statements CURSOR FOR
SELECT tablename FROM pg_tables
WHERE tablename !~* 'sql_*' and tablename !~* 'pg_*' and tablename !~* 'schema_*';
BEGIN
FOR stmt IN statements LOOP
EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
END;