NOEXEC SAS SQL

【SAS】「NOTE: PROC SQLはNOEXECオプションを設定し、ステートメントの構文をチェックします。」の対処法

投稿日:

今回はSQLプロシージャを実行した際に、NOEXECオプションを使用していないにも関わらず、

勝手にNOEXECオプションが有効になってしまう場合の対処法について解説します。

結論:構文エラーを正す。

まずは通常のSQLプロシージャから。


/* sql_1 */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;


proc sql;
  create table data2 AS
  select *
  from data1;
quit;
  • 正常にSQLプロシージャが実行される。

/* sql_2 */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;


proc sql;
  create table data2 AS
  select *,
  from data1;
quit;
  • select句がカンマで終わっているため、エラー。
  • NOEXECオプションを使用してないにも関わらず、NOEXECオプションが有効になっている。(SQLプロシージャの構文が不適切だと、自動的にNOEXECオプションが有効になる?)
  • SQLプロシージャの構文が不適切な場合で、なおかつNOEXECオプションが有効になっている際は、エラー内容を表示する。(参考:SAS 9.4 SQLプロシジャユーザーガイド、第2版

/* sql_3 */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;


proc sql;
  create table data2 AS
  select *
  from data1
  where;
quit;
  • where条件を記載していないため、エラー。
  • NOEXECオプションを使用してないにも関わらず、NOEXECオプションが有効になっている。(SQLプロシージャの構文が不適切だと、自動的にNOEXECオプションが有効になる?)
  • SQLプロシージャの構文が不適切な場合で、なおかつNOEXECオプションが有効になっている際は、エラー内容を表示する。(参考:SAS 9.4 SQLプロシジャユーザーガイド、第2版

「NOEXECのメッセージが出たら、SQLプロシージャの構文ミスを疑う」と覚えておくと良いでしょう。

-NOEXEC, SAS, SQL

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】足し算。その3(SUM関数を用いた計算)【of】

今回はSUM関数を用いた足し算で、ofを使った計算について解説します。  (前回はSUM関数を用いた足し算について解説しました。⇒【SAS】足し算。その2(SUM関数を用いた計算) | ビジ …

no image

【SQL】【Snowflake】スキーマの更新【CREATE OR REPLACE SCHEMA】

今回は、Snowflake上でスキーマを更新する方法について、解説します。 — 更新用 create or replace schema DB1.SCHEMA1; スキーマSCHEMA1の新規作成( …

no image

【SQL】【Snowflake】ストアドプロシージャをスケジュール実行する方法【タスク】【CREATE OR REPLACE TASK】

今回は、登録したストアドプロシージャをスケジュール登録し、自動走行する方法について解説します。 テーブルの作成(更新):【SQL】【Snowflake】テーブルの更新【CREATE OR REPLAC …

【SAS】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

今回はFREQプロシージャにオプションを用いた場合について解説します。  FREQプロシージャの基本的な使い方については過去記事で解説しています。⇒【SAS】FREQプロシージャは頻度集計とクロス集計 …

【SAS】MEANSも集計に便利(デフォルトで結果を出力)【NOPRINT】

今回はMEANSについて解説します。 似た文法でSUMMARYプロシージャがあります。 【SAS】SUMMARYは集計に便利 今回のMEANSプロシージャも集計を行うのですが、こちらはデフォルトで「結 …