while i<=30 loop kxrq:=substr(cs_kxrq,i,1); kxrq2:=substr(cs_kxrq2,i,1); if(kxrq='1'or kxrq2='1')then kxrq3:=kxrq3||one; else kxrq3:=kxrq3||zero; end if; end loop; --代码很幼稚,希望各位高手多多指点
delete from to_lcjbxx where lcjbxx_ny = cs_ny; insert into to_lcjbxx(lcjbxx_wsfcc) ( select f_getwsffsfcc(f.sfzcc,f.sfzdm,f.zdzdm,g.sfzcc,g.sfzdm,g.zdzdm) from tmp_fsfcc f,tmp_fsfcc g where f.ny=cs_ny and g.ny=cs_ny and f.sfzdm=g.zdzdm and f.zdzdm=g.sfzdm; ); --报错 缺少右括号 --查询后的函数返回的值不能直接进行 insert 操作 --麻烦各位了
上面求与的那个 这样就可以了吧 declare a varchar2(20); b varchar2(20); c varchar2(20); begin a := '10101001'; b :='1000101101'; dbms_output.put_line(1010101101); c :=a+b; dbms_output.put_line(c); dbms_output.put_line(replace(c,'2','1')); end;
--猜测一下,楼主想让括号里面哪个有值要哪个。
select nvl(cs_kxrq,cs_kxrq2) into kxrq from dual;
实际上是这样的
cs_kxrq varchar2;
cs_kxrq2 varchar2;
cs_kxrq:="1111110011";
cs_kxrq2:="0001100111";--想对这两个字符串进行 “或运算”
--最后结果 字符串 等于“1111110111”
--想法太天真,怎么可能对字符串进行运算呢
--解决方案一: 对字符串进行转换成二进制数 再进行或运算,感觉这个有点问题。
--解决方案二: 分别取每一位数比较只要上下两个有一个为 “1”该位置为1
--方案二代码cs_kxrq varchar2;
cs_kxrq2 varchar2;
one char;
zero char;
kxrq3 varchar2;cs_kxrq:="1111110011";
cs_kxrq2:="0001100111";
while i<=30 loop
kxrq:=substr(cs_kxrq,i,1);
kxrq2:=substr(cs_kxrq2,i,1);
if(kxrq='1'or kxrq2='1')then
kxrq3:=kxrq3||one;
else
kxrq3:=kxrq3||zero;
end if;
end loop;
--代码很幼稚,希望各位高手多多指点
delete from to_lcjbxx where lcjbxx_ny = cs_ny;
insert into to_lcjbxx(lcjbxx_wsfcc)
(
select f_getwsffsfcc(f.sfzcc,f.sfzdm,f.zdzdm,g.sfzcc,g.sfzdm,g.zdzdm) from tmp_fsfcc f,tmp_fsfcc g
where f.ny=cs_ny and g.ny=cs_ny and f.sfzdm=g.zdzdm and f.zdzdm=g.sfzdm; );
--报错 缺少右括号
--查询后的函数返回的值不能直接进行 insert 操作
--麻烦各位了
declare
a varchar2(20);
b varchar2(20);
c varchar2(20);
begin
a := '10101001';
b :='1000101101';
dbms_output.put_line(1010101101);
c :=a+b;
dbms_output.put_line(c);
dbms_output.put_line(replace(c,'2','1'));
end;