我正在尝试使用 shell 脚本删除具有特定后缀(作为参数 $1 传递)的表。
如果选择了父表而没有删除其子表,我将绕过父表并增加异常块中的计数器。
当我在 sql developer 中运行此脚本并将 $1 替换为正确的值时,它可以工作。但是当我运行这个 shell 脚本时,它卡住了。
您能否看一下并告诉我,我在 shell 脚本中缺少什么?
代码:
#!/bin/bash
cat <<ENDDROPNEWTABS >dropnewtabs.sql
set pagesize 100
DECLARE
t_cnt NUMBER;
CURSOR C001
IS
SELECT table_name FROM user_tables WHERE table_name LIKE '%$1%';
BEGIN
BEGIN SELECT COUNT(*) INTO t_cnt FROM user_tables WHERE table_name LIKE '%$1%';
END;
WHILE(t_cnt > 0) LOOP
FOR i IN C001 LOOP
BEGIN EXECUTE IMMEDIATE 'DROP TABLE '||i.table_name;
EXCEPTION
WHEN OTHERS THEN
t_cnt := t_cnt+1;
NULL;
END;
t_cnt := t_cnt-1;
END LOOP;
END LOOP;
END;
exit
ENDDROPNEWTABS
echo "Dropping the tables created for this task..."
sqlplus -s usn/pwd@sid @dropnewtabs.sql >tablesDropped.txt
#END