小弟一直用sqldeveloper开发,发现想删全部表的时候特别麻烦,于是想到用pl/sql写了下面的代码:
declare
cursor tab_cur is select 'drop table '||table_name||';' from user_tables;
tab_row varchar2(100);
begin
open tab_cur;
while tab_cur%found
loop
fetch tab_cur into tab_row;
execute immediate tab_row;
end loop;
close tab_cur;
end;可是执行却删不了任何表。
求高手指教这是为什么。
declare
cursor tab_cur is select 'drop table '||table_name||';' from user_tables;
tab_row varchar2(100);
begin
open tab_cur;
while tab_cur%found
loop
fetch tab_cur into tab_row;
execute immediate tab_row;
end loop;
close tab_cur;
end;可是执行却删不了任何表。
求高手指教这是为什么。
'drop table '||table_name||';'中,最后的分号是不需要的。
1.'drop table '||table_name||';'分号不要
2.while tab_cur%FOUND这里的判断有问题
修改后代码如下:
declare
cursor tab_cur is select 'drop table '||table_name from user_tables WHERE table_name='XIAODEJUN';
tab_row varchar2(100);
BEGIN
open tab_cur;
--while tab_cur%FOUND
LOOP
fetch tab_cur into tab_row;
EXIT WHEN tab_cur%NOTFOUND;
execute immediate tab_row;
end loop;
close tab_cur;
end;
declare
cursor tab_cur is select table_name from user_tables WHERE table_name='XIAODEJUN';
tab_row varchar2(100);
BEGIN
open tab_cur;
--while tab_cur%FOUND
LOOP
fetch tab_cur into tab_row;
EXIT WHEN tab_cur%NOTFOUND;
execute immediate 'drop table ' || tab_row;
end loop;
close tab_cur;
end;