日期:2014-05-17 浏览次数:20840 次
--根据意思应是这样子 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 过程已成功完成。
------解决方案--------------------
楼主,你自己解决了应该舒服了,给分吧。