Oracle - 单个 CSV 字符串结果中的多个 SELECT 查询无需多个游标

问题描述 投票:0回答:1

我有一个会不断扩展的 SQL 文件,并且应该包含多个 SELECT 查询。目标是同时执行多个 SELECT 查询并将结果作为单个 CSV 字符串返回。我不想使用单独的游标,因为脚本将来将包含大量 SELECT 查询,并且在代码中使用许多游标是不可扩展的。

-- (ID_CB, VARCHAR2(15), optional)
-- (X_CB, VARCHAR2(15), optional)
DECLARE
  V_ID_CB VARCHAR2(15) := '{V_ID_CB}';
  V_X_CB VARCHAR2(15) := '{V_X_CB}';
BEGIN
    IF V_ID_CB IS NOT NULL THEN
        OPEN :result_cursor FOR
            SELECT * FROM DEMANDES WHERE ID_CB = V_ID_CB;
    ELSIF V_X_CB IS NOT NULL THEN
        OPEN :result_cursor FOR
            SELECT * FROM SITES;
    END IF;
END;

将来,我希望脚本能够执行许多 SELECT 查询,并且希望将结果作为单个 CSV 字符串返回,而不需要为每个 SELECT 查询定义单独的 CURSOR。

我的问题:

是否可以在单个查询中执行多个 SELECT 并以 CSV 字符串形式获取结果? 如果是这样,如何在不必为每个 SELECT 定义单独的 CURSOR 的情况下实现这一点?

预先感谢您的帮助。

sql plsql oracle-database
1个回答
0
投票

是否可以在单个查询中执行多个 SELECT 并以 CSV 字符串形式获取结果?如果是这样,如何在不必为每个 SELECT 定义单独的 CURSOR 的情况下实现这一点?

如果您要这样做,请使用

UNION ALL

SELECT 1 AS result_set,
       expression_that_generates_your_csv_string AS csv
FROM   table1
UNION ALL
SELECT 2, expression_that_generates_your_csv_string FROM table2
UNION ALL
SELECT 3, expression_that_generates_your_csv_string FROM table3
UNION ALL
SELECT 4, expression_that_generates_your_csv_string FROM table4

但是,这似乎是个坏主意。

© www.soinside.com 2019 - 2024. All rights reserved.