现在想要做一个游标
内容如下 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条件应该怎么写?
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;
大概这样子