WRTの「実行」と「終了」:
一部のSASプロシージャは、「グループ実行処理」と呼ばれるものをサポートしています。これは、プロシージャが「実行」を確認したときに、要求されたすべての作業を実行することを意味します。声明。プロシージャは、「quit:」statemnetが表示されるまで実行を続けます。実際、「やめる」。ステートメントは自動的に「実行」を挿入します。まだやるべきことがある場合は声明。
PROCDATASETSはそれらの手順の1つです。「やめる」声明は、手順が行うためのこれ以上の作業はないと述べています。この些細な例を考えてみましょう。
proc datasets;
change a=new_a;
run;
delete new_a;
run;
quit;
最初のステートメント(変更)は、既存のデータセット「a」の名前を「new_a」に変更します。2番目のステートメントは、そのデータセットを削除します。「実行」を含めなかった場合。この例のステートメント(「change」の後)では、「new_a」データセットが存在しないことに気づき、どちらのステートメントも実行しないため、プロシージャは失敗します。
そうは言っても、私がPROCDATASETSを自分で使用することはめったにありません。私はPROCSQLを使用することを好みます。
WRT:PROCSQLを使用したPROCDELETEとDROPTABLEの比較:
PROC DELETEは正式に「非推奨」になっていますが、それはつまり、PROCDELETEが変更されなくなることを意味します。SASライブラリからデータオブジェクトを削除するのは簡単な手順です。いつも使っています。PROCSQLと比較して1つの特別な利点があります。PROC DELETEを使用して存在しないデータセットを削除しようとすると、ログに警告メッセージが表示されます。ただし、SQLからDROP TABLEステートメントを試行すると、エラーが発生し、SQLステップが停止します。TeradataやOracleなどの外部データベースにロードするETLスクリプトで新しいテーブルを作成するときは、常にPROCDELETEを使用します。
長い間、私は知っていますが、これが役立つことを願っています。
ボブ