SQLプロシジャで、選択された行があったかどうかを確認する

[OS] ALL
[リリース] ALL
[キーワード] Base, SQL, WHERE clause, count, automatic macro variable, SQLOBS

[質問]

SQLプロシジャのSELECTステートメントでWHERE句を指定して、データを抽出しています。
選択された行があったかどうかを簡単に確認する方法はありますか。

[回答]

選択された行数がSQLOBSマクロ変数にセットされるので、この値で確認できます。

プログラム例


  PROC SQL;
    CREATE TABLE work.class2 as 
    SELECT * FROM sashelp.class
      WHERE age > 16; 
    %PUT &sqlobs; 
  QUIT; 

  %PUT &sqlobs;

注意:
PROC SQLステートメントでNOPRINTオプションを指定していて、CREATE句を指定していない場合、選択された行が存在する場合は1、存在しない場合は0が自動マクロ変数のSQLOBSにセットされます。
これは、内部的に1行が処理対象となるためです。

SQLOBSマクロ変数に1がセットされる例


  PROC SQL noprint;
    SELECT * FROM sashelp.class
      WHERE age > 11; 
    %PUT &sqlobs; 
  QUIT; 

  %PUT &sqlobs;