首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

sql存储过程 IN函数 赋参数 有关问题

2012-05-24 
sql存储过程IN函数赋参数问题SQL code方法1select * from userswhere dept_code in (0000005,0000026)

sql存储过程 IN函数 赋参数 问题

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,所以只能用动态。
[解决办法]
探讨
因为你必须把你的传入参数拼到串里,执行UPDATE,所以只能用动态。

热点排行