1 Antwort
- Neueste
- Die meisten Stimmen
- Die meisten Kommentare
0
【以下的回答经过翻译处理】 你好,
祝你有美好的一天!
感谢您在AWS re:Post中提出您的问题。
请查看下面针对您的问题的思考。
============
为此,请您创建一个临时表来存储您传递的值。您可以不使用JSON,而是请求传递一个表示您要查找的ID数组的字符串。
例如:
create temporary table t as select split_to_array('1,2,3', ',') as id_array;
然后行去关联:
select id from (select id_array from t) as sub, unnest(sub.id_array) as id;
如果不使用临时表,您可能会看到以下错误消息:select id from (select split_to_array('1,2,3', ',') as id_array) as sub, unnest(sub.id_array) as id; ERROR: Unnest subquery's result on leader is not supported
或者类似下面的错误:
CREATE OR REPLACE PROCEDURE "pkg_util_test_passing_json"(v_json_ids varchar, INOUT "result" refcursor) LANGUAGE plpgsql AS $$ DECLARE BEGIN drop table if exists tempIds; create temp table tempIds as SELECT JSON_PARSE(v_json_ids) as ArrId; OPEN result FOR SELECT * FROM mytable WHERE id IN (select e.id from tempIds as t, t.ArrId as e at index); END; $$
另一个解决方法,可能比临时表更好,是使用像Oracle内置的伪表一样的虚拟表。
create table dual (dummy varchar(1)); insert into dual values ('x');
select id from (select split_to_array('1,2,3', ',') as id_array from dual) as sub, unnest(sub.id_array) as id;
输出:id
"1" "2" "3"(共3行)
您可以将'1,2,3'替换为传递的ID列表参数。这将有助于使用虚拟表持久化。
=============
为了处理JSON,必须将其存储在表/临时表中,然后再进行处理。
希望回答了您的问题。
谢谢,祝您有美好的一天!
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren