declare
 table_name varchar2(4) ;
 lv_date varchar2(20);
begin
 table_name := 'dual' ;
 
 select to_char(sysdate) into lv_date from  table_name;
 
 dbms_output.put_line(lv_date);
 
end ;

解决方案 »

  1.   

    這種情況要用動態SQL
    declare
     table_name varchar2(4) ;
     lv_date varchar2(20);
    begin
     table_name := 'dual' ;
      
     execute immediate 'select to_char(sysdate) from ' || table_name  into lv_date ;
      
     dbms_output.put_line(lv_date);
     
    end ;
      

  2.   

    如果你的表名是通过变量传来的话 你要用动态sql 不能直接select ... from table_name
    要sqlstr:='select to_char(sysdate) into lv_date from '||table_name;
     execute immediate sqlstr;
      

  3.   


    declare
        table_name varchar2(4) ;
        lv_date varchar2(20);
    begin
        table_name := 'dual' ;
        execute immediate 'select to_char(sysdate) from ' || table_name into lv_date ;
        dbms_output.put_line(lv_date);
    end ;     PL/SQL block, executed in 0 sec.
         2010.11.15 12:27:56             
         Total execution time 0.016 sec. 
      

  4.   

    各位很給力啊~~那動態sql的insert該怎麼寫