首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

写了一个DECLEAR.可是施行出错

2012-12-24 
写了一个DECLEAR.可是执行出错我写了一个declare,想批量drop以TMP_开头的临时表。可惜执行的时候报错。报错

写了一个DECLEAR.可是执行出错
我写了一个declare,想批量drop以TMP_开头的临时表。可惜执行的时候报错。
报错信息如下:
ORA-06550: 第 17 行, 第 48 列: 
PLS-00487: 对变量 'MYTAB' 的引用无效
ORA-06550: 第 17 行, 第 7 列: 
PL/SQL: Statement ignored


DECLARE
   CURSOR mycur
   IS
      SELECT table_name
        FROM user_tables
       WHERE table_name LIKE 'TMP_%';

   mytab   user_tables.table_name%TYPE;
BEGIN
   OPEN mycur;

   FETCH mycur
    INTO mytab;

   WHILE mycur%FOUND
   LOOP
      EXECUTE IMMEDIATE 'drop table ' || mytab.TABLE_NAME;
   END LOOP;

   CLOSE mycur;
END;
/

[最优解释]
mytab.TABLE_NAME 改为 mytab.
我会这么写:
open mycur;
loop
  fetch mycur into mytab;
  exit when mycur%notfound;
  EXECUTE IMMEDIATE 'drop table ' 
[其他解释]
另外,注意要有drop any table权限。。
[其他解释]
 mytab; 
end loop;
close mycur;

热点排行