我正在嘗試使用shell腳本刪除具有特定後綴(作爲參數傳遞$ 1)的表。在Shell腳本中執行PLSQL塊的問題
如果在沒有刪除其子表的情況下選擇父表,我將繞過父表並增加異常塊中的計數器。
當我在sql開發者中用$ 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/[email protected] @dropnewtabs.sql >tablesDropped.txt
#END
感謝亞歷克斯的解決方案。 :-)關於縮進,我故意刪除它認爲這將是問題的原因。 :) – Savitha