use*_*703 6 sql arrays postgresql plpgsql
我有一张桌子,其中两个人可能有相同的名字,但有不同的ID.我得到了名字,需要申请他们的身份证.
当我使用如下命令时:
SELECT id_num INTO cust_id FROM Customers WHERE name=CName;
Run Code Online (Sandbox Code Playgroud)
如果我在命令行(psql)上使用此命令,则返回2个结果(例如).
但是当我将它用作SQL脚本(PL/pgSQL)的一部分时,它总是抓住第一个实例.
我试过选择cust_id[],但这产生了一个错误.那么选择所有结果的正确方法是什么,并将它们泵入阵列或其他简单方法来使用它们?
在声明
DECLARE id_nums bigint[];
Run Code Online (Sandbox Code Playgroud)
在选择
id_nums := ARRAY(select cust_id from Customers WHERE name = CName);
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢循环使用
DECLARE id_num bigint;
FOR id_num in select cust_id from Customers WHERE name = CName LOOP
your code here
END LOOP;
Run Code Online (Sandbox Code Playgroud)
在postgresql docs 9.1中读取plpgsql控件结构.
要将单个行中的数据放入数组,请使用数组构造函数:
DECLARE id_nums int[]; -- assuming cust_id is of type int
id_nums := ARRAY (SELECT cust_id FROM customers WHERE name = cname);
Run Code Online (Sandbox Code Playgroud)
或者聚合函数 array_agg()
id_nums := (SELECT array_agg(cust_id) FROM customers WHERE name = cname);
Run Code Online (Sandbox Code Playgroud)
或SELECT INTO用于分配::
SELECT INTO id_nums
ARRAY (SELECT cust_id FROM customers WHERE name = cname);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14924 次 |
| 最近记录: |