在 json_table 中使用变量值

Using a variable value in json_table

我有以下 json:

{
    "title": "title",
    "description": "description",
    "references": [{
        "reference_id": 181
    },
{
        "reference_id": 182
    }]
}

我想在 table xyz 中插入引用数组的数据,其中包含以下列: buffer_id 和 reference_id

INSERT INTO xyz (
        buffer_id,
        reference_id
    )
        SELECT
            l_buffer_id,
            reference_id
        FROM
            dual,
            JSON_TABLE ( data, '$.references[*]'
                    COLUMNS (
                        l_buffer_id ,
                        reference_id NUMBER PATH '$.reference_id'
                    )
                );

这里,l_buffer_id是一个变量,我的值就存放在这里。我尝试了上述方法将数据插入xyz。但是它不起作用。有什么方法可以让它发挥作用吗?

你可以使用这样的机制:

INSERT INTO xyz (
        buffer_id,
        reference_id
    )
WITH tab(data) AS
(
 SELECT '{"title": "title",
    "description": "description",
    "references": [{
        "reference_id": 181
    },
{
        "reference_id": 182
    }]
}' FROM dual
)
SELECT row_number() over (order by reference_id) as l_buffer_id,
       reference_id
  FROM tab,
       json_table(data, '$'
               COLUMNS (NESTED PATH '$."references"[*]'
                   COLUMNS (reference_id NUMBER PATH '$."reference_id"')));  

Demo