Postgresql 使用alter table时无法连接字符串

Postgresql 使用alter table时无法连接字符串,postgresql,plpgsql,Postgresql,Plpgsql,错误:在“(”处或附近出现语法错误 第8行 这是我在postgres中的第一个存储过程,我不确定为什么会出现此错误。在重命名为之后,必须是SQL标识符(名称),而不是字符串 由于参数只能用于数据值,不能用于标识符,而且参数只能用于SELECT和DML语句,因此不能这样做 相反,您必须构造一个SQL字符串,并使用execute(动态SQL)执行它。小心避免SQL注入问题-使用格式: BEGIN EXECUTE format( 'ALTER TABLE mysche

错误:在“(”处或附近出现语法错误 第8行


这是我在postgres中的第一个存储过程,我不确定为什么会出现此错误。

重命名为
之后,必须是SQL标识符(名称),而不是字符串

由于参数只能用于数据值,不能用于标识符,而且参数只能用于
SELECT
和DML语句,因此不能这样做

相反,您必须构造一个SQL字符串,并使用
execute
(动态SQL)执行它。小心避免SQL注入问题-使用
格式

BEGIN
   EXECUTE format(
              'ALTER TABLE myschema.test RENAME TO %I',
              CONCAT('test', counter)
           );
END;
占位符
%I
用于标识符

BEGIN
   EXECUTE format(
              'ALTER TABLE myschema.test RENAME TO %I',
              CONCAT('test', counter)
           );
END;