CLI アプリケーションでシステム・カタログ情報を照会するためのカタログ関数

カタログ関数 (スキーマ関数とも呼ばれる) は、 Db2® サーバー・ファミリー全体で照会を発行し、一貫性のある結果セットを受け取ることができるように、汎用インターフェースを提供します。 カタログ関数を使用することで、サーバーに固有のカタログ照会やリリースに固有のカタログ照会を受け取ることを回避できます。

アプリケーションが頻繁に行う最初のタスクの 1 つに表のリストの表示があり、 このリストから 1 つ以上の表を選択します。 アプリケーションは、このような Db2 コマンドのカタログ情報を取得するために、データベース・システム・カタログに対して独自の照会を発行できますが、代わりにアプリケーションが CLI カタログ関数を呼び出すのが最良の方法です。

カタログ関数を使用すると、 ステートメント・ハンドルによってアプリケーションに結果セットが返されます。 これらの関数を呼び出すことは、概念的には、 SQLExecDirect() を使用してシステム・カタログ表に対して選択を実行することと同等です。 これらの関数を呼び出した後、アプリケーションは、通常の SQLFetch()から列データを処理する場合と同様に、結果セットの個々の行をフェッチすることができます。 CLI カタログ関数は以下のとおりです。
  • SQLColumnPrivileges()
  • SQLColumns()
  • SQLExtendedProcedures()
  • SQLExtendedProcedureColumns()
  • SQLForeignKeys()
  • SQLGetTypeInfo()
  • SQLPrimaryKeys()
  • SQLProcedureColumns()
  • SQLProcedures()
  • SQLSpecialColumns()
  • SQLStatistics()
  • SQLTablePrivileges()
  • SQLTables()

この関数によって返される結果セットは、各カタログ関数の説明の部分で定義されています。 列は、指定された順序で定義されます。 今後のリリースでは、それぞれの結果セットの定義の末尾に他の列が追加される可能性があります。 したがって、そのような変更の影響を受けないような方法で、 アプリケーションを作成する必要があります。

注: デフォルトでは、 Informix® データベースサーバ は、システムカタログ内のスキーマ情報 (表名や列名など) を小文字で戻します。 一方、Db2 データ・サーバーは、 スキーマ情報を大文字で返します。

カタログ関数の中には、非常に複雑な照会を実行する結果となるものがあります。 返された情報をアプリケーションが保管するようにし、 同じ情報を入手するために繰り返し呼び出しを行うことがないようにすることをお勧めします。