如何组合两个pl/sql select语句

时间:2021-06-24 08:18:19

标签: sql oracle

我有 3 个带有相同表但列不同的 select 语句,如果我将输入设为 1,我想在单个结果集中给出结果,如果我给出 2 个输入,它应该运行第一个选择语句,它应该运行第二个选择陈述。 很抱歉我不能在这里复制我的代码,因为它太大了,而且出于我办公室工作的安全目的,所以任何人都可以建议这样做的方法。而且我是 plsql 的新手,所以我很难找到在谷歌

2 个答案:

答案 0 :(得分:0)

据我所知,您需要根据特定条件创建两个选择: 您将像这样使用 param1 和 param2 值:

CREATE OR REPLACE PROCEDURE my_sp (param1 VARCHAR2, param2 VARCHAR2)
IS
BEGIN
    IF param1 IS NULL AND param2 IS NOT NULL THEN
        SELECT ...
        INTO ... -- Assumed
        FROM ...
        WHERE my_column = p_DrumNo;
    ELSE
        SELECT ...
        INTO ... -- Assumed
        FROM ...
        WHERE ORDER_ID IN (SELECT ORDER_ID FROM ORDERDELIVERY);
    END;
END;

注意:我在这个例子中使用的属性是一个随机的例子,不要忘记通过你的属性来改变它。

希望能帮助您解决问题。

答案 1 :(得分:0)

使用 union,这里是拉不同列的单行示例:

with t as (
    select 1 ID, 'Hello World' col1, 50 col2, 'abc' col3, 'col4' col4 from dual
)
select ID
    , Col4
from t
where 1 = 1 --Replace left side 1 with var here

union all

select col2
    , col3
from t
where 1 = 2 --Replace left side 1 with var here

您需要调整数据类型以匹配每个列的顺序,并且它们必须具有相同的列数,但是列数少于最大查询的任何列都可能只有一堆 {{1 }} 不需要数据的地方。

相关问题