反向for循环在Postgresql中不起作用

时间:2015-12-13 08:01:21

标签: postgresql for-loop reverse pgadmin

当我试图在PostgreSQL中使用Reverse for循环时,似乎编译器没有识别出“反向”字。 它完全跳过循环。

DO $$
BEGIN
RAISE NOTICE 'LOOP STARTING......' ;
FOR  I IN  REVERSE  1..10 LOOP
RAISE NOTICE 'INSIDE LOOP......' ;
RAISE NOTICE 'NUMBER IS  %', I;
END LOOP;
END $$ ;
  

OUTPUT
  -------------------
  通知:循环启动......

但是当我省略reverse这个词时,编译器工作正常。 不知道为什么会这样。

我正在使用PgAdmin版本1.20.0

2 个答案:

答案 0 :(得分:4)

如果您选择REVERSE,则必须使用101。所以你必须替换:

FOR  I IN  REVERSE  1..10 LOOP

通过

FOR  I IN  REVERSE  10..1 LOOP

答案 1 :(得分:-1)

谢谢你的帮助。

我还面临一个问题。

根据你的建议,我已经整理了我的逆向循环概念..

我试图在PgAdmin中使用反向循环来反转数字让'1234'。

DO $$
DECLARE
L_NO VARCHAR(5) := '1234';
L_LEN NUMERIC(5);
L_REV_NO VARCHAR(5);
BEGIN
L_LEN := CHAR_LENGTH(L_NO) ;
RAISE NOTICE 'STRING LENGTH IS %' , L_LEN  ;
FOR  CNTR IN  REVERSE  L_LEN..1 LOOP
   L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
END LOOP;
RAISE NOTICE 'NUMBER IS %' ,L_NO ;
RAISE NOTICE 'REVERSE NUMBER IS %' ,L_REV_NO ;
END $$ ;

输出

NOTICE:  STRING LENGTH IS 4
NOTICE:  NUMBER IS 1234
NOTICE:  REVERSE NUMBER IS <NULL>

为什么反向号码为<Null>。 甚至我检查了SUBSTRING func Synatx它的正确吗?