2011-08-10 31 views
1

SAS proc SQL execute文を使用して、Oracleサーバ上でSQLとAccess Tableを実行します。スクリプトを自動的に実行させるために、私は通常、テーブルやインデックスを作成してから作成します。ただし、ドロップSQLコードが実行されるときに、テーブルまたはインデックスが存在しないことがあります。存在しないものを削除するというエラーメッセージがSASに記録されます。しかし、SASコードはドロップ後も続くので、この種のエラーメッセージはまったく重要ではありません。これらのエラーメッセージを表示しないようにしたいのですが、SASがログに記録しないようにしています。どのように私はproc SQLでこれを行うことができますか?SAS proc SQL文からのエラーメッセージを抑制する方法

ありがとうございました。

+0

SQLパススルーまたはSASのlibnamesを使用してテーブルにアクセスしていますか? libnamesを使用している場合、procデータセットを使用してインデックスを削除できますか? –

+0

私はSQLパススルーを使用しています。 SAS PROCからインデックスを削除する方法がわかりません。私にとって、インデックスは純粋なデータベースのものであり、SASはデータベースインデックスの存在を知らないかもしれません。私が間違っているなら、私を訂正してください。 – Steve

+0

SQLパススルーを使用してテーブルを削除すると、そのテーブルに属するすべてのインデックスが一緒に削除されることがわかりました。だから私の仕事にインデックスを落とす必要はありません。私はいつもテーブルを落とすことができます。この時点から、cmjohnsのアイディアが私のために働いています。ありがとう。 – Steve

答えて

2

私は、この1つのタイプのエラーを抑制するための選択肢に気づいていません。しかし、いくつかのオプションがあります。

最善の策は、あなたがそれに基づいて行動しようとする前に、データ・セットが存在するかどうかを確認して、あなたのコードをクリーンアップすることです:

%if %sysfunc(exist(&name_of_data_set)) %then %do;

はまた、これらの工程の間、すべてのログをリダイレクトすることができ、どこproc printtoでメッセージが届きませんが、貴重な情報を失う可能性があります。

+0

SAS関数を使用してテーブルの存在をチェックするというアイデアは便利です。ありがとう。しかし、それはデータベースのようにインデックスになると無力です。既存のインデックスを削除しようとすると、エラーは発生します。 – Steve

+0

私は特定のエラーメッセージを抑制する必要はないと思う。私は単一のproc SQLにドロップすることができますし、私はそのproc sqlは任意のデータベースの実行エラーメッセージを抑制することができます場合は動作します。さらに、私はproc sqlとしてコードを書くでしょう。 oracle_connectionでexecute()を実行します。終了する; execute(...)から返されたデータベース側のエラーメッセージがSASに戻ったときに表示されなくなった場合に役立ちます。ありがとう。 – Steve

関連する問題