在使用JSON_ARRAYAGG函数时,没有发现具有兼容参数的名为"JSON_ARRAYAGG“类型的”函数“的授权例程出现错误:
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 发布于 2020-10-21 11:15:58
请理解您必须使用正确的文档来匹配Db2产品平台。对于Db2,有三个主要平台(Linux/Unix/Windows(LUW)、Z/OS和I系列(as/400)。此外,DB2 on-云中的特性(以及一个不同的知识中心)与常规的Db2-LUW略有不同。
您引用了DB2in-i的一个页面(as/400),它是一个不同的产品(具有不同的语法),而不是云上的DB2。因此,Db2 on-cloud没有该函数json_arrayagg (尽管当前版本的Db2 for I系列确实具有该功能)。
请使用此处的db2 on-cloud正确的知识中心。
https://www.ibm.com/support/knowledgecenter/SSFMBX/com.ibm.swg.im.dashdb.kc.doc/welcome.html
对于云上的Db2,语法是使用函数、JSON_ARRAY和相关函数。您可以使用此查询查看哪些JSON函数可用:select routinename from syscat.routines where routinename like 'JSON%' (假设您有正确的访问权限)。
https://stackoverflow.com/questions/64460658
复制相似问题