Oracle Pl/SQL: Loop through XMLTYPE nodes

前端 未结 5 1061
长情又很酷
长情又很酷 2020-12-04 14:38

I have a XMLTYPE with the following content:


    
        
            user1
         


        
5条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-04 15:11

    How about this:

    PROCEDURE xmltest IS
      v_userlist XMLType;
      v_count NUMBER(38) := 1;
    BEGIN
      /* define XML variable */
      v_userlist := XMLType('
        
            
                user1
            
            
                user2
            
            
                user3
            
        ');
    
      /* for each user, print out their name (each element can be extracted using xpath '//user[1]' '//user[2]' etc) */
      WHILE v_userlist.existsNode('//user[' || v_count || ']') = 1 LOOP
        dbms_output.put_line(v_userlist.extract('//user[' || v_count || ']/name/text()').getStringVal());
        v_count := v_count + 1;
      END LOOP;
    END;
    

提交回复
热议问题