去掉变量最后一个字符
strsql是一个字符串变量select substr(strsq,1,length(strsql)-1)from dual;begin
  mun number;
   mun :=length(strsql)-1;
   select substr(strsq,1,mun)from dual;
   end
这二种为什么报错. 

解决方案 »

  1.   


    declare
      mun number;
    begin  
      mun :=length(strsql)-1; 
      select substr(strsq,1,mun)from dual; 
      end 
      

  2.   


    declare
      mun number;
      str varchar2(15);
    begin  
      mun :=length('asdasdasd')-1; 
      select substr('asdasdasd',1,mun) into str from dual; 
    end 
      

  3.   

    strsq是常量字符串的话不会有问题,变量就不懂了,希望大虾指教,帮你顶下
      

  4.   


    SQL> set serveroutput on;
    SQL> 
    SQL> declare
      2    strsql varchar2(100);
      3    v_output varchar2(100);
      4    mun number;
      5  begin
      6    strSQL := 'aaaaaasdfsfsdf';
      7    mun :=length(strsql)-1;
      8    select substr(strsql,1,mun) into v_output from dual;
      9    dbms_output.put_line(v_output);
     10  end;
     11  /aaaaaasdfsfsdPL/SQL procedure successfully completed
      

  5.   

    begin 
      mun number; 
      mun :=length(strsql)-1; 
      select substr(strsq,1,mun)from dual; 
      end 
    这二种为什么报错. 你的错误有很多
    第一 strsql 没定义
    第二 在begin end 快里面 select var into  var1 from dual;
    第三 strsql和strsq不同
      

  6.   


    --修正一下
    var mun number;
    begin
      :mun :=length(strsql)-1; 
      select substr(strsq,1,mun) into :mun from dual; 
    end;print :mun
      

  7.   

    我是这么做的. 为什么还报错. create or replace procedure xml2table(dir     varchar2,
                                          inpfile varchar2 ) is
      p   xmlparser.parser;
      doc xmldom.domdocument;
      procedure readelements(doc xmldom.domdocument) is  --转到表的子过程
        nl     xmldom.domnodelist;
        len    number;
        n      xmldom.domnode;
        mun    number;
        nl2    xmldom.domnodelist;
        len2   number;
        strsql varchar2(1000);
      begin
        nl  := xmldom.getelementsbytagname(doc, 'employee');
        len := xmldom.getlength(nl);
        for i in 0 .. len - 1 loop
          strsql := 'insert into people2 values (';
          n      := xmldom.item(nl, i);
          nl2  := xmldom.getchildnodes(n);
         len2 := xmldom.getlength(nl2);
          for j in 0 .. len2 - 1 loop  
            n      := xmldom.item(nl2, j);
             strSQL := strSQL || '''' || xmldom.getNodeValue(xmldom.getFirstChild(n)) || ''|| ''',';
          end loop; 
          mun :=length(strsql)-1;
          strsql := substr(strsq,1,mun);   -- 这里报错, 
          strsql := strsql || ')';
          dbms_output.put_line(strsql); 
          execute immediate (strsql);    
        end loop;
        commit;
        dbms_output.put_line('');
      end readelements;
    begin
      p := xmlparser.newparser;
      xmlparser.setvalidationmode(p, false);
      xmlparser.setbasedir(p, dir); 
      xmlparser.parse(p, dir ||'\' ||inpfile); 
      doc := xmlparser.getdocument(p);
      xmlparser.freeparser(p);
      dbms_output.put_line('存到表 people2 中.');
      readelements(doc);
      xmldom.freedocument(doc);
    end xml2table;
      

  8.   


    strsql := substr(strsq,1,mun);   
    -->
    strsql := substr(strsql,1,mun);
      

  9.   

    感谢各位: 问题解决了: strsql := substr(strsq,1,mun);   strsq 少打了一个L
      

  10.   

    你也不看看substr(strsq,1,mun);   根本写错了