arrays - 如何从plsql中的表列创建一个数组
问题描述
我有一张表,有一列,我用我的代码得到这样的列值:
100
533
523
634
552
.
.
.
有很多这样的行,然后我想让它像一行一样(100,533,634,552,.,.,.,.)
将它们全部添加v_products
到数组中。我怎样才能做到这一点?
这是我的代码:
v_products varchar2(4000);
for c in (select distinct ugb.product_code
into v_products
from uat.product_grup ug,uat.product_grup_con ugb
where ug.product_grup_code like '%PRODUCT' )
loop
v_products := c.product_code;
dbms_output.put_line(v_products);
end loop;
解决方案
如果您希望它们作为字符串,请使用LISTAGG
.
DECLARE
v_products varchar2(4000);
BEGIN
SELECT LISTAGG( product_code, ',' ) WITHIN GROUP ( ORDER BY product_code )
INTO v_products
FROM (
select distinct ugb.product_code
from uat.product_grup ug
CROSS JOIN uat.product_grup_con ugb
where ug.product_grup_code like '%PRODUCT'
);
END;
/
如果您希望它们作为一个集合(或VARRAY
),则使用BULK COLLECT INTO
:
DECLARE
TYPE product_code_list IS TABLE OF uat.product_grup_con.product_code%TYPE;
v_products product_code_list;
BEGIN
select distinct ugb.product_code
BULK COLLECT INTO v_products
from uat.product_grup ug
CROSS JOIN uat.product_grup_con ugb
where ug.product_grup_code like '%PRODUCT';
END;
/
(顺便说一句,您确定要在WHERE
子句中没有相关连接条件的旧逗号连接,这相当于 am ANSICROSS JOIN
吗?没有连接条件,您所做的就是product_code
从表中获取每个值uat.product_grup_con
。您可能想要什么是一个INNER JOIN
。)
推荐阅读
- python - 如何在 Pandas 中读取带有引号字符和逗号的 CSV 文件?
- c - 在 c 中打印 char 常量的大小
- duplicates - Mautic-Pipedrive 中的重复/三重触点
- python - 堆叠 RBM 以在 sklearn 中创建深度信念网络
- android - 为什么按钮让我的画布在 Android 中绘制成六边形?
- swift - 在 almofire 中调用带有标头、HTTP 方法、参数和回调到被调用类的 api
- swift - 对成员“地图”的模糊引用
- reactjs - ReactJS - 读取 json 值,第一级值是可读的,但是第二级显示错误
- javascript - 反应,排序和对象数组(减少和映射?)
- php - 检查文件是图像还是pdf