Sql 如何在oracle数据库中执行批量更新集

Sql 如何在oracle数据库中执行批量更新集,sql,oracle,Sql,Oracle,我有一个对象数组,其中包含的数据,例如:[{name:“name”,“id”:123,brNo:456},…],我希望通过更新多行数据,将其放入oracle数据库,如下所示: UPDATE STUDENT_BASE SET NAME = :name WHERE ID = :id AND B

我有一个对象数组,其中包含的数据,例如:[{name:“name”,“id”:123,brNo:456},…],我希望通过更新多行数据,将其放入oracle数据库,如下所示:

UPDATE   STUDENT_BASE                     
SET   NAME    = :name
                                                      
WHERE ID      = :id               
AND   BR_NO   = :brNo

我想做一些循环,但不确定如何做。

如果您使用的是Oracle 18或更高版本,您可以使用该函数将json信息查询到集合中

DECLARE
    TYPE student_base_rec IS RECORD
    (
        name    student_base.name%TYPE,
        id      student_base.id%TYPE,
        brno    student_base.brno%TYPE
    );

    TYPE student_base_t IS TABLE OF student_base_rec;

    l_json           CLOB
        := '[{name: "new_name", "id": 123, brNo: 456}, {name: "new_name2", "id": 111, brNo: 222}]';
    l_student_base   student_base_t;
BEGIN
    SELECT name, id, brno
      BULK COLLECT INTO l_student_base
      FROM JSON_TABLE (l_json,
                       '$[*]'
                       COLUMNS (name PATH '$.name', id PATH '$.id', brno PATH '$.brNo'));

    FORALL i IN 1 .. l_student_base.COUNT
        UPDATE student_base
           SET name = l_student_base (i).name
         WHERE id = l_student_base (i).id AND brno = l_student_base (i).brno;
END;

阵列在哪里?采用哪种格式?Oracle数据库的版本是什么?