データベース特有のSQLを実行する方法

[OS] ALL
[リリース] ALL
[キーワード] proc sql

[質問]

SQLプロシジャでデータベース上のテーブルの作成や読み込み処理を行っていますが、データベース特有の関数を使用することは可能でしょうか?

[回答]

SASのSQLプロシジャは大まかには、次の2つの使用方法があります。

  1. SAS内で使用可能なSQLステートメントを記述。
    内部的にDBで解釈できるSQLへ変換されて処理される
  2. データベース側で有効なSQLを記述。
    パススルー機能を用いてデータベース側にそのSQLを渡して処理される

ご質問の場合、上述の2のパススルー機能でデータベース特有の関数を使用することが可能です。

以下は、Teradataのtable1テーブル定義を出力するSHOW TABLEを使用した例です。

例)プログラム
PROC SQL;
  CONNECT TO teradata AS tera(USER=user PASSWORD=password);
  SELECT * FROM CONNECTION TO tera(show table table1);
  DISCONNECT FROM tera;
QUIT;

パススルー機能の詳細については、次のドキュメントをご確認ください。

SAS® 9.4 Language Reference: Concepts, Fifth Edition(英語)
http://support.sas.com/documentation/cdl/en/lrcon/68089/HTML/default/viewer.htm#n1kbstf7vw0qcjn1ibfc8c78a9lc.htm
“SQL Procedure Pass-Through Facility”