Db2 没有名为“的授权例程”;JSON_ARRAYAGG";“类型”的;功能“;发现具有兼容的参数
找不到具有兼容参数的“FUNCTION”类型的名为“JSON_ARRAYAGG”的授权例程 在DB2中使用JSON_ArrayAg函数时出错:Db2 没有名为“的授权例程”;JSON_ARRAYAGG";“类型”的;功能“;发现具有兼容的参数,db2,syntax-error,Db2,Syntax Error,找不到具有兼容参数的“FUNCTION”类型的名为“JSON_ARRAYAGG”的授权例程 在DB2中使用JSON_ArrayAg函数时出错: QUERY: SELECT JSON_OBJECT('ACCT_ID' VALUE acct_id, 'use_case list' VALUE JSON_ARRAYAGG( JSON_OBJECT('use_case' VALUE use_case, 'stag
QUERY:
SELECT JSON_OBJECT('ACCT_ID' VALUE acct_id,
'use_case list' VALUE
JSON_ARRAYAGG(
JSON_OBJECT('use_case' VALUE use_case,
'stage' VALUE stage)))
FROM NULLID.ProductRecommendations
GROUP BY acct_id;
Error:
FAILED [SELECT - 0 rows, 0.009 secs] 1) [Code: -440, SQL State: 42884] No authorized routine named "JSON_ARRAYAGG" of type "FUNCTION" having compatible arguments was found.. SQLCODE=-440, SQLSTATE=42884, DRIVER=4.26.14
2) [Code: -727, SQL State: 56098] An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-440", SQLSTATE "42884" and message tokens "JSON_ARRAYAGG|FUNCTION".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.26.14
我在示例表上尝试了此查询,但仍然得到相同的错误:
Person Table:
create table NULLID.person
(
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
name varchar(50),
PRIMARY KEY (id)
);
Contacts Table:
create table NULLID.contacts
(
id INT,
person_id int,
key varchar(50),
value varchar(100),
foreign key (person_id) references person (id)
);
Insert Queries:
insert into NULLID.person values (1, 'A');
insert into NULLID.person values (2, 'B');
insert into NULLID.contacts values (1, 1, 'EMAIL', 'a@b.com');
insert into NULLID.contacts values (2, 1, 'PHONE', '123');
insert into NULLID.contacts values (3, 2, 'EMAIL', 'b@b.com');
insert into NULLID.contacts values (4, 2, 'PHONE', '456');
Query:
SELECT
person_id,
JSON_ARRAYAGG(key)
FROM
contacts
GROUP BY person_id
Error:
16:17:44 FAILED [SELECT - 0 rows, 0.009 secs] 1) [Code: -440, SQL State: 42884] No authorized routine named "JSON_ARRAYAGG" of type "FUNCTION" having compatible arguments was found.. SQLCODE=-440, SQLSTATE=42884, DRIVER=4.26.14
2) [Code: -727, SQL State: 56098] An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-440", SQLSTATE "42884" and message tokens "JSON_ARRAYAGG|FUNCTION".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.26.14
请理解,您必须使用正确的文档来匹配Db2产品平台。对于Db2,有三个主要平台(Linux/Unix/Windows(LUW)、Z/OS和i系列(as/400)。此外,云上Db2与常规的本地Db2 LUW具有略微不同的特性(和不同的知识中心) 您引用了一个Db2-for-i(as/400)页面,它是一个与Db2 on cloud不同的产品(具有不同的SQL语法)。因此,Db2 on cloud没有该功能(尽管当前版本的Db2 for i系列具有该功能) 请使用正确的Db2 on cloud知识中心(位于此处) 对于Db2 on cloud,语法是使用函数JSON_数组和相关函数。您可以使用此查询查看哪些JSON函数可用:
从syscat.routinename中选择routinename,其中routinename类似于“JSON%”
(假设您有正确的访问权限)。哪个Db2服务器平台和版本托管您的数据库?(Db2服务器运行在Linux/Unix/Windows/CLOUD、as/400(i系列)或大型机Z/OS上)?Db2服务器在云上运行。我尝试在本地docker容器上使用最新的Db2映像运行它,但仍然得到相同的错误。我使用的是最新版本的docker&Db2映像的windows 10。从哪里可以找到Db2支持JSON_ArrayAg的示例?AFAIK Db2有JSON_ARRAY和ARRAY_AGG,但没有组合select json_arrayagg(json_对象('number'值帐户))来自emp_帐户组(按id);感谢您分享这些详细信息。我将阅读本文档。是否有任何方法可以使用.db2 query对json数据执行分组?我想使用一个id和一个包含多个json对象的嵌套数组来聚合数据