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