【问题标题】:How to execute WHILE LOOP in SQL (PostgreSQL/pgAdmin 4)?如何在 SQL (PostgreSQL/pgAdmin 4) 中执行 WHILE LOOP?
【发布时间】:2022-01-27 23:48:06
【问题描述】:

我正在尝试在 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)

【问题讨论】:

  • that 回答你的问题了吗?
  • 你应该用 sql-server 而不是 postgresql 来标记你的问题。语法各不相同。

标签: sql postgresql while-loop syntax-error pgadmin


【解决方案1】:

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

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

【讨论】:

  • 啊,非常感谢您解决这个问题!我很感激 :) 有没有办法只打印计数器而不输出“NOTICE”?
  • @deanne: 为什么不简单地使用select * from generate_series(0,5)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多