You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL代码块内乘法操作触发语法错误问题咨询

PostgreSQL DO块语法错误问题解决

你的问题不是PostgreSQL把星号和SELECT语句里的星号混淆了,核心是用错了局部变量的赋值语法。

错误根源

在PL/pgSQL(DO块使用的编程语言)中,SET是用来配置数据库参数的命令(比如SET timezone = 'UTC'),根本不能用来给你声明的局部变量b赋值。你写的set b to 2 * 50;不符合变量赋值规则,数据库解析时触发语法错误,星号只是刚好在错误位置被标记出来而已。

正确的变量赋值方式

给PL/pgSQL局部变量赋值有两种常用正确写法:

  1. 使用赋值运算符:=
do $$
declare
    b integer = 5;
begin
    b := 2 * 50;
end;
$$
  1. 使用SELECT ... INTO语法(适合从查询结果赋值,简单计算场景也适用)
do $$
declare
    b integer = 5;
begin
    SELECT 2 * 50 INTO b;
end;
$$

补充说明

以上两种写法都能正确将变量b赋值为100,不会触发语法错误。你之前的报错和星号本身没有关系,完全是误用了SET命令导致的。

内容的提问来源于stack exchange,提问作者GT 77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:02:43