PostgreSQL使用变量向未创建表插入数据时触发语法错误求助
问题解决:PostgreSQL DO块变量声明语法错误
你的报错根源是DO块中变量声明的语法不正确,PostgreSQL要求在DO块里必须用DECLARE关键字来定义变量,不能直接把变量赋值写在BEGIN块内部。解析器因为语法错误无法正确识别美元引号的结束位置,所以报了"unterminated dollar-quoted string"的错误。
修正后的代码如下:
-- Declare variables correctly in DO block DO $$ DECLARE v_version_ID INT := 1; v_version_number VARCHAR(255) := '1.0'; v_version_creation_date DATE := '2024-01-29'; v_version_close_date DATE := '9999-12-31'; BEGIN -- Insert values using variables INSERT INTO attendence_list (version_ID, version_number, version_creation_date, version_close_date) VALUES (v_version_ID, v_version_number, v_version_creation_date, v_version_close_date); END $$; -- Select data from the table SELECT * FROM attendence_list;
关键修正点:
- 新增
DECLARE关键字,把所有变量定义放在BEGIN块之前,这是PostgreSQL PL/pgSQL块的标准语法结构。 - 移除了不必要的内层
BEGIN/END嵌套,你的场景不需要额外的子块。
执行修正后的代码后,变量就能被正确识别,插入操作可以正常执行。
内容的提问来源于stack exchange,提问作者8indie8
相关产品推荐
相关产品推荐

