读书人

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

发布时间: 2012-12-24 10:43:13 作者: rapoo

写了一个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;

读书人网 >oracle

热点推荐