如何在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$$;
我正在尝试 运行 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$$;