如何在存储过程中创建字符串列表变量以及如何在另一个查询中使用它?
Posted
技术标签:
【中文标题】如何在存储过程中创建字符串列表变量以及如何在另一个查询中使用它?【英文标题】:How to create a variable of list of strings in stored procedure and how to use it in another query? 【发布时间】:2019-03-24 06:59:05 【问题描述】:我想在一个变量中保存一个字符串列表,然后我想在另一个查询中使用它。
这是我的存储过程:
CREATE PROCEDURE store_validated_sku_id
(variable_sku_id OUT VARCHAR2)
AS
BEGIN
SELECT vsku.SKU_ID INTO variable_sku_id
FROM CHELSEA_prdcataloga.vs_sku_discont_details_test discontd
JOIN CHELSEA_prdcataloga.vsx_dcs_sku vsku ON discontd.SWAP_SKU = vsku.JDA_SKU_ID
JOIN CHELSEA_prdcataloga.auto_ship_view bcc ON bcc.sku_id = vsku.SKU_ID
WHERE vsku.web_eligible = 1
AND vsku.discontinued = 0
AND bcc.auto_ship_eligible = 1;
dbms_output.put_line('variable_sku_id = '|| variable_sku_id);
END store_validated_sku_id;
我希望 variable_sku_id
成为字符串列表并希望在另一个查询中使用它。
【问题讨论】:
查看LISTAGG
函数。
感谢@TenG,它成功了。我用 SELECT LISTAGG(vsku.SKU_ID,',') 替换了 SELECT vsku.SKU_ID INTO variable_sku_id 组内(按 vsku.SKU_ID 排序) INTO variable_sku_id
【参考方案1】:
create procedure store_validated_sku_id(variable_sku_id OUT VARCHAR2)
as
BEGIN
SELECT listagg(vsku.sku_id, ',') within group(order by vsku.sku_id)
INTO variable_sku_id
FROM chelsea_prdcataloga.vs_sku_discont_details_test discontd
JOIN chelsea_prdcataloga.vsx_dcs_sku vsku ON discontd.swap_sku = vsku.jda_sku_id
JOIN chelsea_prdcataloga.auto_ship_view bcc ON bcc.sku_id = vsku.sku_id
WHERE vsku.web_eligible = 1
AND vsku.discontinued = 0
AND bcc.auto_ship_eligible = 1;
dbms_output.put_line('variable_sku_id = ' || variable_sku_id);
END store_validated_sku_id;
【讨论】:
以上是关于如何在存储过程中创建字符串列表变量以及如何在另一个查询中使用它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在dojo工具包的Current JS文件中使用在另一个JS文件中创建的Dialog变量