日期:2014-05-17 浏览次数:20976 次
--根据意思应是这样子 select * from emp where (3=2 and job='MANAGER') or (3<>2 and job='SALESMAN'); --但是3=2不可能成立,因此也可以写为这样子 select * from emp where job='SALESMAN'; --所以你的3=2因该换成其他有意义的条件才合时
------解决方案--------------------
create or replace procedure var_select(
name in varchar2)
is
emp_rec emp%rowtype;
begin
select * into emp_rec from emp
where
job=decode(name,'test1','MANAGER','');
end;
只要job is not null 就可以这样
------解决方案--------------------
SQL> create or replace procedure var_select(
2 p_name in varchar2)
3 is
4 emp_rec emp%rowtype;
5 cursor cur is select * from emp
6 where job=decode(p_name,'test1','MANAGER','SALESMAN');
7 begin
8 open cur;
9 loop
10 fetch cur into emp_rec;
11 exit when cur%notfound;
12 dbms_output.put_line('empno:'||emp_rec.empno);
13 end loop;
14 close cur;
15 end;
16 /
过程已创建。
SQL> exec var_select('test1');
empno:7566
empno:7698
empno:7782
PL/SQL 过程已成功完成。
SQL> exec var_select('test2');
empno:7499
empno:7521
empno:7654
empno:7844
PL/SQL 过程已成功完成。
------解决方案--------------------
楼主,你自己解决了应该舒服了,给分吧。