使用多个FOR LOOP语句更新语句时出错

问题描述 投票:-2回答:1
DECLARE
   TYPE Outer_Loop IS TABLE OF VARCHAR2 (4000);
   TYPE Inner_Loop IS VARRAY (50) OF VARCHAR2 (50 Byte)

   OL Outer_Loop := Outer_Loop ('1','2');
   IL Inner_Loop := Inner_Loop ('ONE','TWO','THREE','FOUR')

BEGIN
   FOR I IN 1 .. OL.COUNT
   LOOP
      EXECUTE IMMEDIATE
            'UPDATE User_'
         || OL (I)
         FOR J IN 1 .. IL.COUNTER
         LOOP
         || 'set  Number = '
         || IL (J);

      DBMS_OUTPUT.PUT_LINE (
         'IN User_' || OL(I) || 'set Number AS' || IL (J) );

   END LOOP;

   COMMIT;
END;

预期结果:我想用一个,两个,三个,四个来更新每个用户。所以我期望的结果是

IN User_1 set Number AS ONE 
IN User_1 set Number AS TWO
IN User_1 set Number AS THREE
IN User_1 set Number AS FOUR
IN User_2 set Number AS ONE
IN User_2 set Number AS TWO
IN User_2 set Number AS THREE
IN User_2 set Number AS FOUR
oracle for-loop plsql sql-update dynamic-sql
1个回答
0
投票

为我输入1 .. OL.COUNT环立即执行“更新用户_”|| OL(I)对于J IN 1 .. IL.COUNTER环|| '设置编号='|| IL(J);

© www.soinside.com 2019 - 2024. All rights reserved.