create or replace procedure rm_allathlete_info
as
begin
for tab_nam in (select table_name from user_tables) loop
execute immediate 'delete from '||tab_nam; 
end loop;
end;
完成删除当前用户下的所有表中所有记录的功能:提示错误如下:
5/3      PL/SQL: Statement ignored
5/21     PLS-00306: 调用 '||' 时参数个数或类型错误请问错在哪里?

解决方案 »

  1.   

    create or replace procedure rm_allathlete_info
    as
    begin
        for tab_nam in (select table_name from user_tables) loop
            execute immediate 'delete from '||tab_nam.table_name; 
        end loop;
    end;
      

  2.   


    create or replace procedure rm_allathlete_info
    as
    V_SQL VARCHAR2(200);
    begin
        for tab_nam in (select table_name from user_tables) loop
        BEGIN
            V_SQL:='delete from '||tab_nam.TABLE_NAME;
            execute immediate V_SQL; 
        END;
        end loop;
    end;
      

  3.   

    execute immediate 'delete from '||tab_nam;应该是:
    execute immediate 'delete from '||tab_nam.table_name;