Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » システム・オブジェクト » システム・プロシージャ » システム・プロシージャのアルファベット順リスト

 

sa_describe_query システム・プロシージャ

1つのローにクエリの各出力カラムを記述したクエリの結果セットを記述します。

構文
sa_describe_query( 
query 
[, add_keys ] 
)
引数
  • query   記述されている SQL 文のテキストを指定する LONG VARCHAR パラメータ。

  • add_keys   記述されているクエリの結果セットで一意にローを識別するカラムのセットを決定するかどうかを指定する任意の BIT パラメータ。デフォルトは 0 です。データベース・サーバはカラムの識別を試行しません。このパラメータの詳細については、以下の備考部分を参照してください。

結果セット
カラム名 データ型 説明
column_number INTEGER このローが記述するカラムの順序位置 (開始値は 1)。
name VARCHAR(128) カラムの名前。
domain_id SMALLINT カラムのデータ型。SYSDOMAIN システム・ビューを参照してください。
domain_name VARCHAR(128) データ型の名前。SYSDOMAIN システム・ビューを参照してください。
domain_name_with_size VARCHAR(160) サイズと精度を含むデータ型名 (CREATE TABLE 関数または CAST 関数で使用されます)。
width INTEGER 文字列パラメータでは長さ、数値パラメータでは精度、その他のデータ型では記憶領域のサイズをバイトで示します。
scale INTEGER 数値データ型カラムでは小数点以下の桁数、その他のデータ型では 0 を示します。
declared_width INTEGER 文字列パラメータでは長さ、数値パラメータでは精度、その他のデータ型では記憶領域のサイズをバイトで示します。
user_type_id SMALLINT 1 つの場合はユーザ定義のデータ型の type_id、それ以外の場合は NULL。SYSUSERTYPE システム・ビューを参照してください。
user_type_name VARCHAR(128) 1 つの場合はユーザ定義のデータ型の name、それ以外の場合は NULL。SYSUSERTYPE システム・ビューを参照してください。
correlation_name VARCHAR(128) 使用できる場合、式と関連付けられている相関名、それ以外の場合は NULL。
base_table_id UNSIGNED INTEGER 式がフィールドの場合は table_id、それ以外の場合は NULL。SYSTAB システム・ビューを参照してください。
base_column_id UNSIGNED INTEGER 式がフィールドの場合は column_id、それ以外の場合は NULL。SYSTABCOL システム・ビューを参照してください。
base_owner_name VARCHAR(128) 式がフィールドの場合は所有者名、それ以外の場合は NULL。SYSUSER システム・ビューを参照してください。
base_table_name VARCHAR(128) 式がフィールドの場合はテーブル名、それ以外の場合は NULL。
base_column_name VARCHAR(128) 式がフィールドの場合はカラム名、それ以外の場合は NULL。
nulls_allowed BIT 式をNULL にできる場合は 1、それ以外の場合は 0 を示すインジケータ。
is_autoincrement BIT 式が、オートインクリメントすると宣言されているカラムの場合は 1、それ以外の場合は 0 を示すインジケータ。
is_key_column BIT 式が結果セットのキーの一部である場合は 1、それ以外の場合は 0 を示すインジケータ。詳細については以下の備考部分を参照してください。
is_added_key_column BIT 式が追加されたキーカラムの場合は 1、それ以外の場合は 0 を示すインジケータ。詳細については以下の備考部分を参照してください。
備考

sa_describe_query プロシージャは、API に依存しないメカニズムによって、クエリの結果セットに含まれる式に関する名前とタイプの情報を記述します。

add_keys に 1 が指定されている場合、sa_describe_query プロシージャはクエリ対象のオブジェクトからカラム・セットを検索しようとします。このカラム・セットは、記述されるクエリの結果セットのローを一意に識別するときに使用されます。キーの形式は、クエリ対象のオブジェクトに含まれる1 つ以上のカラムです。また、クエリで明示的に参照されないカラムがキーに含まれます。オプティマイザがキーを検索する場合、カラムまたはキーで使用されるカラムは、値が 1 の is_key_column によって結果のキーが識別されます。キーが見つからない場合、エラーが返されます。

キーに含まれるがクエリで明示的に参照されないカラムの場合、is_added_key_column は 1 に設定されます。これは、カラムがプロシージャの結果に追加されたことを示します。それ以外の場合、is_added_key_column の値は 0です。

add_keys を指定しない場合、または 0 の値を指定する場合、オプティマイザは結果セットのキーを検索しようとしません。また、is_key_column と is_added_key_column には NULL が含まれます。

declared_width 値と width 値のどちらもカラムのサイズを記述します。declared_width は、CREATE TABLE 文またはクエリによって定義されるカラムのサイズを記述します。クライアントにフェッチするときに、width 値は、フィールドのサイズを指定します。クライアントの型表記は、データベース・サーバとは異なることがあります。たとえば、return_date_time_as_string オプションがオンの場合、日付と時間のデータ型は文字列に変換されます。文字列の場合、character-length セマンティックで宣言されたフィールドは、CREATE TABLE と一致する declared_width 値があります。width 値は、戻り値の文字列を格納するために必要な最大バイト数を示します。次に例を示します。

宣言 width declared_width
CHAR(10) 10 10
CHAR(10 CHAR) 40 10
TIMESTAMP タイムスタンプ形式の文字列長によって変わります 8
NUMERIC(10, 3) 10 (精度) 10 (精度)
パーミッション

なし

関連する動作

なし

参照

次の例は、Departments テーブルのすべてのカラムを問い合わせると返される情報を記述します。

SELECT *  
FROM sa_describe_query( 'SELECT * FROM Departments DEPT' );

この結果、add_keys パラメータが指定されなかったため、is_key_column と is_added_key_column の値を NULL と示します。

次の例は、Departments テーブルとジョインした Employees テーブルの DepartmentName カラムと Surname カラムを問い合わせることで返される情報を記述します。

SELECT  *
FROM  sa_describe_query( 'SELECT DepartmentName, Surname
 FROM Employees E JOIN Departments D ON E.EmployeeID = D.DepartmentHeadId',
 add_keys = 1 );

この結果、結果セットのロー 3 と 4 に 1 が示されます。これは、クエリの結果セットに含まれるローを一意に識別するときに必要なカラムが Employees.EmployeeID and Departments.DepartmentID であることを示します。また、ロー 3 と 4 の is_added_key_column には 1 が指定されます。これは Employees.EmployeeID と Departments.DepartmentID が、記述されているクエリで明示的にされなかったためです。