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】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

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

no image

【SQL】【Snowflake】テーブルに値を格納する方法【INSERT】

今回はSQLを使って、テーブルに値を格納する方法について解説します。 まず、カラム(列)だけ用意した空のテーブルを用意します。 (参考:【SQL】【Snowflake】テーブルの更新【CREATE O …

SAS Base Programmingの資格を取りました。試験の流れを解説します。[出題された問題のリークも]

仕事でSASというプログラミング言語を使用してるのですが、 SASの資格を欲しいと思って先日、SASの試験Base Programmingを受けてきました。 2021年内に2回受験をして、 1回目は不 …

【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】

今回もPUTについて解説します。  前回、PUTは数値型⇒文字型への変換ができると解説しました。(参考:【SAS】PUTは数値型を文字型に変換する | ビジネスイッチ (how-to-bus …

【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。その2 再帰的使用

今回はSUBSTR関数の再帰的使用について解説していきます。 /* 再帰的 */ data data1; id1=”123456789″; output; run; data data2; set d …