带有程序代码的 Postgres 语句中的语法错误 [重复]
Posted
技术标签:
【中文标题】带有程序代码的 Postgres 语句中的语法错误 [重复]【英文标题】:Syntax error in a Postgres statement with procedural code [duplicate] 【发布时间】:2013-10-02 21:58:05 【问题描述】:我试图制作一个基本的 for 循环示例。找不到我做错了什么。你能帮忙吗:
BEGIN
FOR i_ IN 1..100 LOOP
INSERT INTO "MYSHM".aaa values (i_,i_ + 1 ,i_ + 2,i_ + 3);
END LOOP;
END
[ERROR ] 2.0-2:语法错误,意外字符
【问题讨论】:
Similar question today. 【参考方案1】:程序代码只能在DO
语句或function body 中使用。
使用默认程序语言PL/pgSQL(但也有many other options):
DO
$do$
BEGIN
FOR i IN 1..100 LOOP
INSERT INTO "MYSHM".aaa -- column definition list ?!
VALUES (i, i + 1, i + 2, i + 3);
END LOOP;
END
$do$;
或者,更好的是,使用generate_series()
将您的问题改写为基于集合的操作:
INSERT INTO "MYSHM".aaa -- column definition list ?!
SELECT i, i + 1, i + 2, i + 3
FROM generate_series(1,100) i;
【讨论】:
以上是关于带有程序代码的 Postgres 语句中的语法错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Postgres SequelizeDatabaseError:返回或接近返回的语法错误
获取 PSQLException:错误:在带有 Postgres 的 spark jdbc 中使用查询而不是表名时在“SELECT”处或附近出现语法错误