select * from so_sale where decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#))
这个语句中#pkcorp#这个参数单值的形式是(‘a’),多值的话是(‘a’,‘b’)
要想实现的功能就是当#pkcorp#值为空的时候,就没有查询条件(相当于1=1),能全部查出来,如果有值的话(假设值为a)
那就相当于select * from so_sale where so_sale_pk_corp in(‘a’)
我现在碰到的问题是为多值的时候,decode语句不起作用。select * from so_sale where decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#))
这个语句就通不过,实在是搞不明白。
请问有办法解决么。其实我想要的结果很简单,对于decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#)这个语句
就是判断#pkcorp#是否有值,如果有值的话就返回 so_sale_pk_corp in (#pkcorp#) 反之就返回 1=1 也就是全部返回就是想得到这个结果,但是当#PKCORP#为多值的时候,比如(‘a’,‘b’)就是无法查出来。。请问能否实现呢?
这个语句中#pkcorp#这个参数单值的形式是(‘a’),多值的话是(‘a’,‘b’)
要想实现的功能就是当#pkcorp#值为空的时候,就没有查询条件(相当于1=1),能全部查出来,如果有值的话(假设值为a)
那就相当于select * from so_sale where so_sale_pk_corp in(‘a’)
我现在碰到的问题是为多值的时候,decode语句不起作用。select * from so_sale where decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#))
这个语句就通不过,实在是搞不明白。
请问有办法解决么。其实我想要的结果很简单,对于decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#)这个语句
就是判断#pkcorp#是否有值,如果有值的话就返回 so_sale_pk_corp in (#pkcorp#) 反之就返回 1=1 也就是全部返回就是想得到这个结果,但是当#PKCORP#为多值的时候,比如(‘a’,‘b’)就是无法查出来。。请问能否实现呢?
解决方案 »
- Oracle视图问题
- Oracle Database Express Edition 11g Release 2 支持windows 8 X64位操作系统吗?
- oracle 存储过程怎么样返回多个值,如一个boolean类型和一个数据集?
- 请问如何导入导出一个存储过程,我用的是sqlplus,请问用什么命令?
- 那位有oracle rac的资料
- oracle启动问题.晕了!!!
- 如何用代码实现将SQL中的CUSTOMER表的数据导入到ORACLE的CUSTOMER表中。
- 动态sql 编译通过,但执行提示:‘无效列名’
- 怎么安装ORACLE,十万火急!!!!!
- ora-01406:提取的列值被阶段
- oracle 导入导出
- 请教一个怪的sql问题!
select * from so_sale where (case #pkcorp# when null then '1' else so_sale_pk_corp end ) in (case #pkcorp# when null then '1' else #pkcorp# end)
没有试过。猜想可能可以。
为空 1=1,
不为空要使用动态SQL.
where decode(#pkcorp#,null,'1',so_sale_pk_corp)
in (decode(#pkcorp#,null,'1',#pkcorp#))
为空的话默认为1 条件这样带进去
where (decode(#pkcorp#,null,'1',so_sale_pk_corp) in (decode(#pkcorp#,null,'1',#pkcorp#))
or #pkcorp#=1)