前のページ|次のページ

INTO句

SQLプロシジャにより生成された値をマクロ変数に割り当てます。

種類: SELECTステートメント、SQLプロシジャ

構文

INTO :macro-variable-specification-1 <, :, : macro-variable-specification-2 ...>

必須引数

macro-variable-specification

作成または更新するマクロ変数を1つ以上指定します。各マクロ変数名の先頭にはコロン(:)を付けます。マクロ変数は、次の形式で指定できます。

:macro-variable

1つまたは複数のマクロ変数を指定します。値がマクロ変数に保存される際に、値の先頭および末尾にある空白は削除されません。

select style, sqfeet
   into :type, :size
   from sasuser.houses;

:macro-variable-1 − :macro-variable-n <NOTRIM>

:macro-variable-1 THROUGH : macro-variable-n <NOTRIM>

:macro-variable-1 THRU :macro-variable-n <NOTRIM>

マクロ変数の番号付きリストを指定します。値がマクロ変数に保存される際に、値の先頭および末尾にある空白は削除されます。先頭および末尾の空白を削除したくない場合、NOTRIMオプションを使用します。NOTRIMオプションは、この形式のINTO句に含まれる各要素に対して個々に適用されます。すなわち、同オプションは1つの要素に対してのみ適用され、それ以外の要素には適用されません。

select style, sqfeet
   into :type1 - :type4 notrim, :size1 - :size3
   from sasuser.houses;

:macro-variable SEPARATED BY 'characters ' <NOTRIM>

1つの列のすべての値を含む1つのマクロ変数を指定します。このリスト内の値は、1つまたは複数の

select distinct style
   into :types separated by ','
   from sasuser.houses;

詳細

SELECTステートメントのINTO句は、計算結果やデータ列(変数)の値をマクロ変数に割り当てます。マクロ変数が存在しない場合、INTO句はそれを自動的に作成します。SQLプロシジャのマクロ変数SQLOBSをチェックすることで、SELECTステートメントにより生成される行(オブザベーション)の数を確認できます。
INTO句は、SELECTステートメントの外側クエリでのみ使用可能であり、サブクエリでは使用できません。INTO句は、テーブルの作成時(CREATE TABLE)やビューの作成時(CREATE VIEW)には使用できません。
INTO句により作成されたマクロ変数は、%LETステートメントのスコープ規則に従います。詳細については、%LETステートメントを参照してください。
INTO句により割り当てられた値は、BEST8.出力形式を使用します。

比較

SQLプロシジャ内で、INTO句はSYMPUTルーチンと同様の役割を実行します。

例1: 宣言されたマクロ変数に列の値を保存する

次の例は、データセットSASUSER.HOUSESに基づいて、テーブルの最初の行(またはデータセット内のオブザベーション)に含まれている列(変数)STYLEおよびSQFEETの値を、マクロ変数TYPEおよびSIZEに保存します。%LETステートメントは、変数TYPEの値から末尾の空白を取り除き、変数SIZEの値から先頭の空白を取り除きます。INTO句を次のような形式で使用した場合、デフォルトではこれらの空白は取り除かれません。
proc sql noprint;
   select style, sqfeet
      into :type, :size
      from sasuser.houses;
%let type=&type;
%let size=&size;
%put The first row contains a &type with &size square feet.;
このプログラムを実行すると、次のメッセージがSASログに書き込まれます。
The first row contains a RANCH with 1250 square feet.

例2: マクロ変数のリストに行の値を保存する

次の例では、TYPE1~TYPE4およびSIZE1~SIZE4という2つのマクロ変数のリストを作成し、SASUSER.HOUSESデータセットの最初の4つの行(オブザベーション)に含まれている値を、これらの変数リスト内に保存します。変数リストTYPE1~TYPE4に対してNOTRIMオプションが指定されているため、これらの値の末尾の空白は保持されたままになります。
proc sql noprint;
   select style, sqfeet
      into :type1 - :type4 notrim, :size1 - :size4
      from sasuser.houses;
%macro putit;
   %do i=1 %to 4;
      %put Row&i: Type=**&&type&i**   Size=**&&size&i**;
   %end;
%mend putit;
%putit
このプログラムを実行すると、SASログに次のメッセージが書き込まれます。
Row1:Type=**RANCH ** Size=**1250** Row2:Type=**SPLIT ** Size=**1190** Row3:Type=**CONDO ** Size=**1400** Row4:Type=**TWOSTORY** Size=**1810**

例3: 1つのマクロ変数にすべての行の値を保存する

次の例では、列(変数)STYLEのすべての値をマクロ変数TYPESに保存します。これらの値はカンマと空白で区切られます。
proc sql;
   select distinct quote(style)
      into :types separated by ', '
      from sasuser.houses;
%put Types of houses=&types.;
このプログラムを実行すると、次の行がSASログに書き込まれます。
Types of houses=CONDO, RANCH, SPLIT, TWOSTORY 
前のページ|次のページ|ページの先頭へ