例如传入一个flag
当flag=1和flag=0时where条件语句会不相同
因为在声明段声明cursor时没有办法用条件语句,而自己又不想用两个cursor去做
求大侠解答
当flag=1和flag=0时where条件语句会不相同
因为在声明段声明cursor时没有办法用条件语句,而自己又不想用两个cursor去做
求大侠解答
解决方案 »
- oracle 11g 安装时密码全设为数字了,em登陆不上怎么办啊?
- oracle insert无效是怎么回事
- 逻辑上有点混乱,希望达人指点(主要是数据库的设计上,由一个用户一组变为一用户多组时有点乱了...)
- 在Pro*C中如何将一个图片文件写入到BLOB字段中
- ORACLE开发中的错误
- 祝學:ORACLE建表、存儲過程問題?
- oracle 程序连接时的报错,sqlnet.text显示内容
- 遇到一个很麻烦的连接问题
- occi 创建CreateStatement卡死
- 请问,数据仓库所有字段都用TRIM会影响性能吗?
- 特别急特别,过来看看
- 求助:用免安装客户端时,pl/sql developer 可以连接,程序不能连接
declare
type refempcur is ref cursor;
empcur refempcur;
flag int;
begin
flag:=&flag;--输入flag的值
if flag=0 then
open empcur for select * from emp where sal<2000;
elsif flag=1 then
open empcur for select * from emp where sal>3000;
end if;
fetch empcur into ...
end
cursor c_1 ( flag in number ) is
select col1
from tablename
where yourvar = flag ;
直接将入参写到cursor定义的条件里也是可以的.
或者用动态cursor
功能上类似于
if(flag=1)
sql=select * from tmp_table where col1=abc,and col2=cba
else if(flag=0)
sql=select * from tmp_table where col3=123,and col4=321where的条件比我举得例子要复杂,没有办法用函数去做的那种
如果只想用一个游标要怎么做,谢谢!
你使用个or不就行了select *
from tmp_table
where (flag = 1 and col1 = abc, and col2 = cba)
or (flag = 0 and col3 = 123, and col4 = 321)
自己真土
谢谢oraclefans,结贴撒分!
cursor cur is
select * from tmp_table
where (flag = 1 and col1 = abc and col2 = cba)
or (flag = 0 and col3 = 123 and col4 = 321)