Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle12c中,将JSON用于lenth的问题JSON_值超过11000个字符_Sql_Json_Oracle_Plsql_Oracle12c - Fatal编程技术网

Sql 在Oracle12c中,将JSON用于lenth的问题JSON_值超过11000个字符

Sql 在Oracle12c中,将JSON用于lenth的问题JSON_值超过11000个字符,sql,json,oracle,plsql,oracle12c,Sql,Json,Oracle,Plsql,Oracle12c,我正在Oracle 12c上运行以下代码: DECLARE l_json clob; l_var varchar2(90); l_query clob; mypath clob; l_path_value varchar2(100); BEGIN SELECT json_column into l_json from my_table; SELECT path_column into l_path_value

我正在Oracle 12c上运行以下代码:

DECLARE
       l_json clob;
       l_var varchar2(90);
       l_query clob;
       mypath clob;
       l_path_value varchar2(100);
BEGIN
    SELECT json_column into l_json from my_table;
    SELECT path_column into l_path_value from my_table;  -- this returns 'watchers'
    mypath := '$.second."'||l_path_value||'"'; -- $.second."watchers"
    l_query := 'select json_value('''||l_json||''', '''||mypath||''' ERROR ON ERROR)  from dual';
    execute Immediate l_query into l_var;
    DBMS_OUTPUT.PUT_LINE('var: '||l_var);
END;
运行此命令后,我得到的结果是:
错误报告-
ORA-40441:JSON语法错误
ORA-06512:在第12行
4044100000-“JSON语法错误”
*原因:提供的JavaScript对象表示法(JSON)数据无效
无法分析语法和语法。
*操作:提供具有正确语法的JSON数据。

我期望的结果是:

变量:0

所以,传递的JSON的长度有问题吗

我的json看起来像:

  {
"first": {
    "private": false,
    "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
    "description": "Extension for Alfred that will do a Google translate for you",
    "fork": true,
    "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
    "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
    "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
    "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
    "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
    "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
    "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
    "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
    "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
    "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
    "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
    "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
    "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
    "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
    "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
    "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
    "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
    "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
    "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
    "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
    "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
    "created_at": "2013-06-04T10:45:10Z",
    "updated_at": "2013-06-04T10:45:10Z",
    "pushed_at": "2013-01-12T19:39:03Z",
    "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
    "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
    "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
    "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
    "homepage": null,
    "size": 103,
    "stargazers_count": 0,
    "watchers_count": 0,
    "language": "Shell",
    "has_issues": false,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "forks_count": 0,
    "mirror_url": null,
    "open_issues_count": 0,
    "forks": 0,
    "open_issues": 0,
    "watchers": 0,
    "default_branch": "master"
},
"second": {
    "private": false,
    "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
    "description": "Extension for Alfred that will do a Google translate for you",
    "fork": true,
    "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
    "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
    "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
    "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
    "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
    "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
    "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
    "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
    "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
    "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
    "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
    "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
    "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
    "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
    "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
    "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
    "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
    "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
    "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
    "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
    "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
    "created_at": "2013-06-04T10:45:10Z",
    "updated_at": "2013-06-04T10:45:10Z",
    "pushed_at": "2013-01-12T19:39:03Z",
    "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
    "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
    "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
    "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
    "homepage": null,
    "size": 103,
    "stargazers_count": 0,
    "watchers_count": 0,
    "language": "Shell",
    "has_issues": false,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "forks_count": 0,
    "mirror_url": null,
    "open_issues_count": 0,
    "forks": 0,
    "open_issues": 0,
    "watchers": 0,
    "default_branch": "master"
   }
}

如果您的varchar2(90)对于返回值来说太小,它可能会返回null。请参阅以获取参考。

我不确定它是否有帮助-在您展示的示例中,它没有任何区别,我也不确定不同值中的任何控件或多字节字符是否会导致问题-但我会绑定JSON值,而不是隐式转换为字符串并返回:

l_query := 'select json_value(:json, '''||mypath||''' ERROR ON ERROR)  from dual';
execute Immediate l_query into l_var using l_json;

看起来您展示了一个虚构的示例,这可能没有什么帮助。如果看不到您真正的JSON和路径——或者至少是我们可以用来重现问题的东西——一种可能的解释是输入错误,或者字符混淆,或者结构中的一个小错误。或者确实是JoshMaag所建议的,但您的示例中没有显示。@AlexPoole,我已经更新了真正的JSON并更新了JSON_值查询。我得到一个异常,JSON语法不正确,但我已经验证了JSON语法。这是正确的。是否因为json的长度而存在问题?请提供帮助。您所显示的内容,包括CLOB文本和表中的CLOB列。我猜您有一个控制字符或其他我们在实际表值中看不到的东西。(顺便问一下,你对该列有
是json
检查约束吗?@AlexPoole,是的,我对该列有
是json
约束。那么你存储的内容应该已经有效了。我确信大小实际上不是一个问题,但是您现在的示例少于10000个字符-那么您是否实际得到了具有该精确值的错误?您的真实数据中是否有控制字符或多字节字符?我已经用真实JSON和错误跟踪更新了这个问题。请查收。