- SQL code
方法1select * from users where dept_code in ('0000005','0000026')create or replace procedure mypro(pkey in varchar2)asbegindbms_output.put_line(pkey);for c in( select * from mgs_users where dept_code in (pkey)) loop update mgs_users set enabled='N' where USER_ID = c.USER_ID;end loop;end;beginmypro('''0000005'''||chr(44)||'''0000026''');end;==================================================================================================方法2select * from mgs_users where dept_code in ('0000005','0000026')create or replace procedure mypro(pkey in varchar2)asv_str varchar2(500);begindbms_output.put_line(pkey);v_str:='begin for c in( select * from mgs_users where dept_code in ('||pkey||')) loop ';v_str:=v_str||'update mgs_users set enabled=''Y'' where USER_ID = c.USER_ID; ' ;v_str:=v_str||'end loop;end;' ;execute immediate v_str;commit;end;beginmypro('''0000005'',''0000026''');end;
============================================================================================
查询出部门在0000005,0000006中的员工信息,然后改变员工状态为可用enabled=''Y''
第一种方法直接往存储过程中传参数,无法改变状态
第二种方法用动态语句可以达到目的
小弟新手,麻烦问一下不用动态语句要怎么做?
------解决方案--------------------
因为你必须把你的传入参数拼到串里,执行UPDATE,所以只能用动态。
------解决方案--------------------