语句如下:
declare
  v_cnt varchar2(30); 
begin
execute immediate 'select upper(trim(rate)) from base where no=''010'''  into v_cnt;
  dbms_output.put_line(v_cnt);
end;
/
出现提示未找到变量,我试过如果不加where条件是可以的,例如
execute immediate 'select count(*) from base '  into v_cnt;请问该如何才是正确的语句,万分感谢!!!1!

解决方案 »

  1.   

    execute immediate 'select upper(trim(rate)) from base where no='''010''''  into v_cnt;
      

  2.   

    SQL> declare
      2  v_cnt varchar2(30);
      3  begin
      4  --dbms_output.put_line('select upper(trim(rate)) from tab_1 where id = ''1''');
      5  execute immediate 'select upper(trim(name)) from tab_1 where id = ''1''' into v_cnt;
      6  dbms_output.put_line(v_cnt);
      7  end;
      8  /APL/SQL procedure successfully completed
      

  3.   

    我发现是这个问题,
    execute immediate 'select upper(trim(rate)) from base where no=''010'''  into v_cnt;
    rate是char(15),而v_cnt是varchar2(30),所以取不到值,请问如何转换,我用了to_char都不行
      

  4.   

    这个和char,varchar2类型无关吧楼主检查一下,单独执行:select upper(trim(rate)) from base where no='010';
    可以取得数据么,怀疑单独执行都无法取得数据;
      

  5.   

    execute immediate 'select upper(trim(rate)) from base where no='||tmp||' '  into v_cnt;这样加变量也不行,请指教了
      

  6.   

    都说了是你数据的问题了,你直接用 
    select upper(trim(rate)) into v_cnt from base where no='010';出错吗?
      

  7.   

    现在是字符串可以,加上变量就不行了,很奇怪啊,大家帮我看看是怎么回事????
    declare
      v_cnt varchar2(30); 
      tmp varchar2(30);
    begin
    tmp:='010';
    execute immediate 'select upper(trim(rate)) from base where no='||tmp||''  into v_cnt;
      dbms_output.put_line(v_cnt);
    end;
    /
      

  8.   

    SQL> declare
      2  v_cnt varchar2(30);
      3  tmp varchar2(30);
      4  begin
      5  tmp:='1';
      6  execute immediate 'select upper(trim(name)) from tab_1 where id='||tmp||'' into v_cnt;
      7  dbms_output.put_line(v_cnt);
      8  end;
      9  /APL/SQL procedure successfully completed没有问题啊
      

  9.   

    多谢各位,问题已解决,用chr(39)就行了