【问题标题】:Inserting new JSON document into Oracle Autonomous JSON Database将新 JSON 文档插入 Oracle 自治 JSON 数据库
【发布时间】:2022-01-23 14:37:57
【问题描述】:

使用数据库操作 (SQL Developer Web),单击“新建 JSON 文档”按钮将新的 JSON 文档添加到集合中非常容易。

集合当然是Oracle中的一个表,而表本身有很多列:

我在 ORDS 中使用 PL/SQL 处理程序创建了模块。虽然我可以在这里使用更新 JSON 文档

UPDATE "Collection" SET json_document = '{"key": "value"}' WHERE JSON_VALUE(json_document, '$.id') = :id'

我无法轻松添加新文档

INSERT INTO "Collection" (json_document) VALUES ('{"key": "value"}')

因为id 被设置为PK 列并且必须指定。我如何使用 PL/SQL 在其他地方添加具有自动生成字段的新文档?还是我应该只使用 SODA for PL/SQL 来实现这一点?

谢谢!

【问题讨论】:

    标签: oracle plsql oracle-soda


    【解决方案1】:

    您使用dbms_soda 包来访问该集合。然后使用soda_colletion_t上的方法对其进行操作。

    例如:

    soda create students;
    declare
      collection  soda_collection_t;
      document    soda_document_t;
      status      number;
    begin
      -- open the collection
      collection := dbms_soda.open_collection('students');
      document   := soda_document_t(
        b_content => utl_raw.cast_to_raw ( 
          '{"id":1,"name":"John Blaha","class":"1980","courses":["c1","c2"]}'
        )
      );
    
      -- insert a document
      status := collection.insert_one(document);
    end;
    /
    
    select * from students;
    
    ID                               CREATED_ON               LAST_MODIFIED            VERSION                          JSON_DOCUMENT   
    -------------------------------- ------------------------ ------------------------ -------------------------------- --------------- 
    A92F68753B384F87BF12557AC38098CB 2021-12-22T14:15:12.831Z 2021-12-22T14:15:12.831Z FE8C80FED46A4F18BFA070EF46073F43 [object Object] 
    

    有关如何将 SODA 用于 PL/SQL 的完整文档和示例,请参阅 here

    【讨论】:

    • 好的,看来我必须使用 SODA 而不是一些普通的 SQL?
    • 要更改集合中的文档,是的。您仍然可以使用纯 SQL 进行查询
    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 2013-03-25
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多