我正在尝试在 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 Server
,而不是PostgreSQL
。你应该尝试这样的事情:
do $$
declare
counter integer := 0;
begin
while counter < 5 loop
raise notice 'Counter %', counter;
counter := counter + 1;
end loop;
end$$;
这个答案假设源是 postgres 语法,而不是 sql-server, 由于问题标签不正确。
SQL 标识符和关键字必须 以字母 (a-z,也可以是带变音符号的字母和非拉丁字母)或下划线 (_) 开头。标识符或关键字中的后续字符可以是字母、下划线、数字 (0-9) 或美元符号 ($)。
您可以使用 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