如何向plsql游标添加条件

如何向plsql游标添加条件,sql,oracle,Sql,Oracle,我已经在PLSQL中编写了一个select查询,如下所示 SELECT * FROM order_tab WHERE contract = contract_ AND vendor_no = vendor_no_ AND category = category_; 我需要在此代码中添加一个条件,其中 当订单选项卡中的合同='*'时,忽略条件“合同=合同” 当订单中的合同\u选项卡为其他值时,包括where条件“合同=合同” 这是否可以使用单个select语句实现。 提前感谢。添加或

我已经在PLSQL中编写了一个select查询,如下所示

SELECT *
FROM order_tab
WHERE contract = contract_
AND vendor_no  =  vendor_no_
AND category   = category_;
我需要在此代码中添加一个条件,其中

  • 当订单选项卡中的合同='*'时,忽略条件“合同=合同”
  • 当订单中的合同\u选项卡为其他值时,包括where条件“合同=合同”
这是否可以使用单个select语句实现。
提前感谢。

添加
条件:

SELECT *
FROM   order_tab
WHERE  ( contract = '*' OR contract = contract_ )
AND    vendor_no  =  vendor_no_
AND    category   = category_;

添加
条件:

SELECT *
FROM   order_tab
WHERE  ( contract = '*' OR contract = contract_ )
AND    vendor_no  =  vendor_no_
AND    category   = category_;

条件下使用

选择*
从订单选项卡
其中合同位于(“*”,“合同号”)
供应商编号=供应商编号_

和类别=类别

条件下使用

选择*
从订单选项卡
其中合同位于(“*”,“合同号”)
供应商编号=供应商编号_

和类别=类别

使用Oracle中的解码功能

SELECT *
FROM order_tab
WHERE contract LIKE DECODE(contract_, ’*’, ’%’, contract_)
AND vendor_no  =  vendor_no_
AND category   = category_;

使用Oracle中的解码功能

SELECT *
FROM order_tab
WHERE contract LIKE DECODE(contract_, ’*’, ’%’, contract_)
AND vendor_no  =  vendor_no_
AND category   = category_;

我推荐MT0的答案,简单的
表达式总是更好。我推荐MT0的答案,简单的
表达式总是更好。