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】TRANSPOSEは縦持ち、横持ちを変換できる。その2

今回もTRANSPOSEについて解説します。 前回は縦持ち⇒横持ちにする流れで解説してきました。 【SAS】TRANSPOSEは縦持ち、横持ちを変換できる。その1 今回は横持ち ⇒ 縦持ちの流れに沿っ …

【SAS】LIKE演算子は部分一致を表現できる。【WHERE】

/* if ‘%aaaa%’ */ data data1; Id1=1111; Id2=”1aaaa”; Id3=1111; output; Id1=2222; Id2=”bbbb”; Id3=222 …

【SAS】UPCASE関数は文字列を大文字化する。

今回はUPCASE関数について解説します。 /* upcase */ data data1; Id1=1111; char1=”US”; char2=”aaa”; output; Id1=2222; …

【SAS】”nは本来使用できない文字を使用可能にする。

今回は”nについて解説します。(参考:Solved: what the ”  ‘n ” means? – SAS Support Commu …

【SAS】SUBSTR関数を使って右から文字列を切り取る方法について解説【LENGTHN】

今回はSUBSTR関数を使って右から文字列を切り取る方法について解説します。 (参考:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-busine …