テーブルの定義書情報を取得するSQLServerのユーザー定義関数

本ブログでは以前にSQLServerのデータベースから、テーブル定義書のもとになるデータを取得する方法についてご紹介しました。

今回の記事では、もう一歩先に進んで読者の皆様にご利用していただきやすいように、SQLServerからテーブル定義書用のデータを取得するのSQLをユーザー定義関数にして、ご提供したいと思います。

テーブル定義書のもとになるデータは、SQLServerにあらかじめ用意されている「カタログビュー」から取得します。

本記事では、参照するカタログビューの詳細については触れません。

テーブル定義書用のデータを取得する詳細情報がお知りになりたい方は、以下の記事をご覧ください。

SQL Server のカタログビューからテーブルの定義書情報を取得する
SQLServer にはデータベース内のスキーマ、オブジェクト、スカラー型などの情報を取得するために、システムカタログビューが用意されていま...

テーブル定義情報を取得するユーザー定義関数のSQL文

CREATE文

テーブル定義情報を取得する関数のCREATE文のSQLは次のようになります。

DROP文

テーブル定義情報を取得する関数が既に存在する場合に、いったん削除するDROP文のSQLも一応掲載しておきます。

上記のDROP文のSQLは、ユーザー定義関数を作成するスクリプトを改変する場合に、既に存在している関数を削除して再作成する場合に使ってください。

テーブル定義情報を取得するユーザー定義関数の使い方

テーブル定義情報を取得するために、ユーザー定義関数のCREATE文のSQLをMicrosoft SQL Server Management Studioなどのツールを使って実行してください。

SQLを実行すると「dbo.get_table_definition」というユーザー定義関数が作成されます。

後は、関数を呼び出して実行するのみです。

本記事で作成する関数は、テーブル形式(表形式)のデータを取得して返しますので、SELECT文のFROM句に記載して呼び出します。

以下に例として、スキーマ名が「abc」テーブル名が「SAMPLE_TABLE」のテーブルを取得する例を示します。

テーブルの定義情報を取得するSQL

上記のSQLを実行するとabc.SAMPLE_TABLEテーブルの定義情報を取得することができます。

読者の皆さんが、すぐにテーブル定義書を作成するもとになるデータを取得するユーザー定義関数を使えるように、abcスキーマとSAMPLE_TABLEテーブルを作成するSQLスクリプトも以下に掲載しておきます。

adbスキーマを作成するSQL

SAMPLE_TABLEテーブルを作成するSQL

スキーマの作成とテーブルの作成を行うSQLスクリプトを実行し、作成したテーブル定義情報を取得する関数の「dbo.get_table_definition」を実行していただくと、以下のような結果表が取得できると思います。

テーブル定義データを得るSQLの実行結果

スキーマの作成については、以下の記事を参考にしてください。

データベースのスキーマを作成するCREATE SCHEMAと削除するDROP SCHEMA SQL
データベースには、スキーマ(Schema)と呼ばれるオブジェクトがあります。 スキーマとは、データベース内のテーブルやビューなどのオブ...

テーブルの作成については、以下の記事を参考にしてください。

データベースのテーブルを作成するSQL CREATE TABLE
SQL文では、既存のテーブルに対してINSERT、UPDATE、DELETEなどのステートメントを使用して、テーブルやビューのデータ(レコー...