写了一个block,想把当前用户表的记录数状态抄写到一个自定义表中(cnt1),代码如下:declare 
 
 cnt number(10,0);
 sqlstr1 varchar2(200);
 cursor tblname_cursor is select table_name from user_tables;
 val tblname_cursor%rowtype; begin 
  open tblname_cursor;
    loop
      fetch tblname_cursor into val;
      exit when tblname_cursor%notfound;
      
      sqlstr1:='select count(*) into cnt from '||val.table_name;      
      
      execute immediate sqlstr1;       
            
      insert into cnt1 (tblname,rowcnt) 
      values(val.table_name,cnt);
      
    end loop;
  close tblname_cursor;
end;
运行时,老是提示第16行 ORA-00905 确实关键字,找不出原因,请高手释疑!

解决方案 »

  1.   

          sqlstr1:='select count(*) from ' ¦ ¦val.table_name;      
          
          execute immediate sqlstr1 into cnt ;    
      

  2.   

    改成这样sqlstr1:='select count(*)  from ' ¦ ¦val.table_name;      
          
    execute immediate sqlstr1 into cnt;   
      

  3.   

    动态SQL的SQL字符串里不能出现into 到变量的
      

  4.   


    16,17,18行需要改成如下: SQLSTR1 := 'select count(*)   from ' || val.table_name;
      
     EXECUTE IMMEDIATE SQLSTR1 INTO cnt;