2010年5月,Aaron和Henning提供了注册函数的代码。当以后用“用户名”参数调用该函数时,它将截断所有表格。在Windows 7上,它可以与postgres无缝使用。但是,在Ubuntu上,对于postgres 8.3版本,它们都不能正常工作。
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
我也尝试简化选择语句,将重点放在BEGIN For子句上,通过删除我在Windows中使用的复杂WHERE子句。
你能看出问题吗?谢谢。
它是否无法传递或读取检索后的表名?$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;