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

How to execute WHILE LOOP in SQL (PostgreSQL/pgAdmin 4)?

我正在尝试 运行 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 课程的本科生,所以希望您在解释时考虑到这一点。谢谢! (code source)

This answer assumed the source was postgres syntax, not sql-server, due to the incorrect tag of the question.

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

您的示例来自 SQL Server,而非 PostgreSQL。你应该尝试这样的事情:

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