oracle动态sql中使用位操作(bitand/bitor)的问题 20

已知table1.status=0为什么我在存储过程中执行v_roomids:='1,2,3';executeimmediate'updatetable1setstatu... 已知table1.status=0为什么我在存储过程中执行
v_roomids:='1,2,3';
execute immediate 'update table1 set status=bitor(status,64) where roomid in (' || v_roomids || ')';
commit;
不起作用?
把这句Sql拷到command窗口下运行是没问题的,但是动态执行就无效,也不报错。bitor/bitand函数不能用在动态Sql中吗?
create or replace procedure FRP_SH is
v_roomids varchar2(200);
begin
v_roomids:='1,2,3';
execute immediate 'update nbgd.fc_room set fr_status=bitor(fr_status,64) where roomid in (' ||
v_roomids || ')';
commit;
end FRP_SH;

只不过是bitor对status操作后又把值赋还给status而已
展开
 我来答
lelinghong
2010-06-28 · 超过31用户采纳过TA的回答
知道答主
回答量:192
采纳率:0%
帮助的人:82.6万
展开全部
在9i参考手册中只查到BITAND函数,没有bitor。
BITOR好像要自己弄,网上资料:
BITOR(x,y) = (x + y) - BITAND(x, y);
BITXOR(x,y) = BITOR(x,y) - BITAND(x,y) = (x + y) - BITAND(x, y) * 2;
百度网友ddd0aca8b
2010-06-28 · TA获得超过176个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:141万
展开全部
没弄清楚你两种情况下都是怎么执行的,执行的什么,给个完整的描述,估计能找到问题。这样只言片语不好确定问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式