シェルスクリプトを使用して、特定の接尾辞(引数$ 1として渡される)を持つテーブルを削除しようとしています。シェルスクリプトでPLSQLブロックの実行に関する問題
子テーブルを削除せずに親テーブルを選択した場合は、親テーブルをバイパスして例外ブロック内のカウンタを増やしています。
$ 1を適切な値に置き換えたsql開発者でこのスクリプトを実行すると、動作します。しかし、私はこのシェルスクリプトを実行すると、それは固まっている。
あなたは一見して、私に知らせてください、私はシェルスクリプトで何が欠けていますか?
コード:
#!/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