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】INTCK関数は指定された区間に指定された単位を何回跨ぐか数える。

data data1; Id1 =intck(“YEAR”, ’31Dec2019’d, ‘1Jan2020’d); run; 2019/12/31~2020/1/1の間に年を何回跨ぐか数える。 /* …

【SAS】足し算。その1(+演算子を用いた計算)

今回は+演算子を用いた足し算について解説します。  /* + */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; I …

no image

【SQL】【Snowflake】データベースを新規作成する方法【CREATE DATABASE】

今回は、Snowflake上でデータベースを新規作成する方法について、解説します。 SQL文からデータベースを作成する方法 — 新規作成用 create DATABASE DB1; データベースDB …

【SAS】SAS日時値からSAS日付値に変換する方法【DATEPART】【DATETIME】【DATE】

今回はDATETIMEでSAS日時値を取得した後、SAS日付値に変換する方法について解説していきます。 (つまり、DATETIMEの値からDATEの値に変換する) (DATETIME:【SAS】DAT …

【SAS】NODUPKEYはソート時に重複を削除する

今回はNODUPKEYについて解説します。 data data1; id=”A”; chiku=”SHINJUKU1″; 数字=1; output; id=”A”; chiku=”SHINJUKU2″ …