RT  
 进行或运算报错。 varchar
kxrq:=(cs_kxrq or cs_kxrq2);--对开行日期进行或运算。

解决方案 »

  1.   


    --猜测一下,楼主想让括号里面哪个有值要哪个。
    select nvl(cs_kxrq,cs_kxrq2) into kxrq from dual;
      

  2.   

    kxrq:=(cs_kxrq or cs_kxrq2);--对这样的赋值是不对的,或者取单一的一个中间不能加or
      

  3.   


    实际上是这样的
    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;
    --代码很幼稚,希望各位高手多多指点
      

  4.   


      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 操作
    --麻烦各位了
      

  5.   

    上面求与的那个 这样就可以了吧
    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;