如何在SQL中执行WHILE LOOP(PostgreSQL/pgAdmin 4)?

问题描述 投票:0回答:3

我正在尝试在 pgAdmin 的查询工具中运行这个简单的 WHILE 循环:

DECLARE @counter INT = 1;
    
WHILE @counter <= 5
BEGIN
  PRINT @counter;
  SET @counter = @counter + 1;
END

期望的结果只是从 1 到 5 的列表,但我的 pgAdmin 返回此错误:

错误:“@”处或附近有语法错误
第 1 行:声明 @counter INT = 1;

我是一名非 IT 课程的本科生,所以我希望您在解释时考虑到这一点。谢谢你! (代码来源

sql database postgresql while-loop syntax-error
3个回答
1
投票

您的示例来自

SQL Server
,而不是
PostgreSQL
。你应该尝试这样的事情:

do $$
declare 
   counter integer := 0;
begin
   while counter < 5 loop
      raise notice 'Counter %', counter;
      counter := counter + 1;
   end loop;
end$$;

0
投票

这个答案假设源是 postgres 语法,而不是 sql-server, 由于问题标签不正确。

SQL 标识符和关键字必须 以字母 (a-z,也可以是带变音符号的字母和非拉丁字母)或下划线 (_) 开头。标识符或关键字中的后续字符可以是字母、下划线、数字 (0-9) 或美元符号 ($)。


0
投票

您可以使用 WHILE 语句 创建 DO 语句,如下所示。 *我的帖子详细解释了

WHILE
的声明:

DO $$
DECLARE 
  counter INT := 0;
BEGIN
  WHILE counter <= 5 LOOP
    RAISE INFO 'Counter: %', counter;
      counter := counter + 1;
  END LOOP;
END$$;

然后,您可以得到以下结果:

INFO:  Counter: 0
INFO:  Counter: 1
INFO:  Counter: 2
INFO:  Counter: 3
INFO:  Counter: 4
INFO:  Counter: 5
DO
© www.soinside.com 2019 - 2024. All rights reserved.