首页 > 解决方案 > ORA-40593: 在执行 DBMS_JSON.CREATE_VIEW 期间发现名称冲突:名称

问题描述

使用 JSON_DATAGUIDE 创建视图时:

declare
  dg clob;
BEGIN
  SELECT json_dataguide(json_document, dbms_json.FORMAT_HIERARCHICAL, dbms_json.pretty) into dg
  FROM STATION_INFORMATION;
 
  dbms_json.create_view('STATION_INFORMATION_VIEW', 'STATION_INFORMATION', 'JSON_DOCUMENT', dg);
END;
/

我收到以下错误:

ORA-40593: name conflicts were found during execution of DBMS_JSON.CREATE_VIEW

标签: sqljsondatabaseoracle

解决方案


当数据指南在多个上下文中使用相同的 JSON 键名时,就会发生这种情况。您可以指定 resolveNameConflicts => true 让它自动使名称唯一。

declare
  dg clob;
BEGIN
  SELECT json_dataguide(json_document, dbms_json.FORMAT_HIERARCHICAL, dbms_json.pretty) into dg
  FROM STATION_INFORMATION;
 
  dbms_json.create_view('STATION_INFORMATION_VIEW', 'STATION_INFORMATION', 'JSON_DOCUMENT', dg, resolveNameConflicts => true);
END;
/

推荐阅读