现在想要做一个游标
内容如下 SELECT
*
FROM
TABLE t
WHERE
if 游标参数A = 2 then
t.字段1 = 2 or t.字段1 = 7
elsif 游标参数A =7
t.字段1 = 2 or t.字段1 = 7
else
t.字段1 = 游标参数A
end ifwhere条件应该怎么写?
内容如下 SELECT
*
FROM
TABLE t
WHERE
if 游标参数A = 2 then
t.字段1 = 2 or t.字段1 = 7
elsif 游标参数A =7
t.字段1 = 2 or t.字段1 = 7
else
t.字段1 = 游标参数A
end ifwhere条件应该怎么写?
解决方案 »
- 求助,关于权限问题
- 请教oracle TIMESTAMP的使用
- oracle10 iis7.5 发布后查询语句返回0
- 判断时间段的问题
- 大数据量快速插入
- oracle9i中转义字符的问题!
- oracle数据从别的机器的F盘考到服务器的D盘,启动不了,要怎么修改
- []200分[]在oracle中用分布式有什么好处?在什么情况下必须使用?????分布式包含那些方面???
- 用VC+ADO+Ora8i客户端连不上Ora8i服务器???急!
- 哪里有下Oracle的FTP?
- 远程备份oracle数据库-请高手入内
- oracle学习新手,求几条sql的标准答案对照~~~(书本上找不到答案很急人啊~~)100分求~~
if 游标参数A = 2 then
t.字段1 = 2 or t.字段1 = 7
elsif 游标参数A =7
t.字段1 = 2 or t.字段1 = 7
else
t.字段1 = 游标参数A
end if 这种where的使用是有问题的
我的目的是要把下面的if else 转化为sql文。
if 游标参数A = 2
sql文:
SELECT
*
FROM
TABLE t
WHERE
t.字段1 = 2 or t.字段1 = 7
if 游标参数A =7
sql文:
SELECT
*
FROM
TABLE t
WHERE
t.字段1 = 2 or t.字段1 = 7否则:
SELECT
*
FROM
TABLE t
WHERE
t.字段1 = 游标参数A
(( t.字段1 = 2 or t.字段1 = 7 ) and 游标参数A = 2)
or
(( t.字段1 = 2 or t.字段1 = 7 ) and 游标参数A = 7)
or
(( t.字段1 = 游标参数A ) and 游标参数A not in (2,7))
type t_cursor is ref cursor;
v_cursor t_cursor;
v_sqlstr;
v_table table1%rowtype;
begin
v_sqlstr:='select * from table1';
case a
when 2 then
v_sqlstr:=v_sqlstr||' t.字段1 = 2 or t.字段1 = 7';
when 7 then
v_sqlstr:=v_sqlstr||' t.字段1 = 2 or t.字段1 = 7';
else
v_sqlstr:=v_sqlstr||' t.字段1 = '||a;
end case;
open t_cursor for v_sqlstr;
loop
fetch t_cursor into v_table;
exit when t_cursor%notfound;
--输出结果集
.....
end loop;
end;
大概这样子