PostgreSQL代码块内乘法操作触发语法错误问题咨询
PostgreSQL DO块语法错误问题解决
你的问题不是PostgreSQL把星号和SELECT语句里的星号混淆了,核心是用错了局部变量的赋值语法。
错误根源
在PL/pgSQL(DO块使用的编程语言)中,SET是用来配置数据库参数的命令(比如SET timezone = 'UTC'),根本不能用来给你声明的局部变量b赋值。你写的set b to 2 * 50;不符合变量赋值规则,数据库解析时触发语法错误,星号只是刚好在错误位置被标记出来而已。
正确的变量赋值方式
给PL/pgSQL局部变量赋值有两种常用正确写法:
- 使用赋值运算符
:=
do $$ declare b integer = 5; begin b := 2 * 50; end; $$
- 使用
SELECT ... INTO语法(适合从查询结果赋值,简单计算场景也适用)
do $$ declare b integer = 5; begin SELECT 2 * 50 INTO b; end; $$
补充说明
以上两种写法都能正确将变量b赋值为100,不会触发语法错误。你之前的报错和星号本身没有关系,完全是误用了SET命令导致的。
内容的提问来源于stack exchange,提问作者GT 77
相关产品推荐
相关产品推荐

