• 検索結果がありません。

DDL を使用したテーブルの定義

ドキュメント内 Caché SQL の使用法 (ページ 40-43)

Caché SQL で標準 DDL 文を使用してテーブルを定義できます。以下はその例です。

• ALTER TABLE

• ALTER USER

• ALTER VIEW

• CREATE INDEX

• CREATE ROLE

• CREATE TABLE

• CREATE USER

• CREATE VIEW

• DROP INDEX

• DROP ROLE

• DROP TABLE

• DROP USER

• DROP VIEW

これらの詳細は、"Caché SQL リファレンス" を参照してください。

以下の通り、DDL 文は様々な方法で実行できます。

• ODBC 呼び出しを使用

• JDBC 呼び出しを使用

• DDL スクリプト・ファイルを使用 (下記参照)

• DDL 文を実行するために、メソッドまたはルーチンで埋め込み SQL を使用 (下記参照)

4.2.1 埋め込み SQL での DDL の使用

Caché ObjectScript のメソッド、またはルーチンで埋め込み SQLを使用して、DDL コマンドを呼び 出します。

例えば、以下のメソッドはTEST.EMPLOYEEテーブルを生成します。

ClassMethod CreateTable() As %Integer {

&sql(CREATE TABLE TEST.EMPLOYEE ( EMPNUM INT NOT NULL, NAMELAST CHAR (30) NOT NULL, NAMEFIRST CHAR (30) NOT NULL, STARTDATE TIMESTAMP,

SALARY MONEY, ACCRUEDVACATION INT, ACCRUEDSICKLEAVE INT,

CONSTRAINT EMPLOYEEPK PRIMARY KEY (EMPNUM))) Write "SQL: ",SQLCODE,!

QUIT SQLCODE }

このメソッドが呼び出されると、TEST.EMPLOYEEテーブルの生成を試みます (同様に、対応する TEST.EMPLOYEEクラスの生成も試みます)。これが成功すると、SQLCODE 変数は 0 に設定され ます。失敗した場合は、SQLCODE に失敗の原因を示す SQL エラー・コードを表示します。

DDL 文で最も発生しやすいエラーの原因は、以下の通りです。

• SQL ERROR - 99 (Privilege Violation) : このエラーは、ユーザがその DDL コマンドを実行す る特権を持っていないことを示します。通常、これはアプリケーションが現在のユーザが誰であ るかを確立していないことに起因します。これをプログラミングによって確立するには、

$System.SQLクラス (Basic ではSystem.SQL) の Login メソッドを使用します。

Do $System.SQL.Login(username,password)

• SQL ERROR – 201 (Table or View name not unique) : 新規のテーブルを生成する際に、既に 存在するテーブル名を使用した場合に、このエラーが表示されます。

4.2.2 ダイナミック SQL を使用した DDL の実行

Caché ObjectScript または Basic で、%Library.ResultSetオブジェクトを使用して、ダイナミック SQL を使用した DDL 文を作成し実行します。

例えば、以下の Basic のメソッドはTEST.Personテーブルを生成します。

DDL を使用したテーブルの定義

ClassMethod Create(user As %String, pwd as %String) As %Status [language=Basic]

{

System.SQL.Login(user,pwd) rs = New %Library.ResultSet()

' Create a string containing a DDL command ddl = "CREATE TABLE TEST.Person "

ddl = ddl & "(NAME VARCHAR (30) NOT NULL, SSN VARCHAR (15) NOT NULL)"

' Prepare and Execute the DDL command rs.Prepare(ddl)

ret = rs.Execute() Return ret

}

埋め込み SQL の例と同様に、現在誰もログインしていない場合やTEST.Personテーブルが既に 存在する場合、このメソッドはエラーを生じます。

4.2.3 コマンド行から DDL スクリプトを実行

リレーショナル・データベースから Caché にテーブルを移行する際、テキスト・ファイル内に DDL ス クリプトがあります。Caché は、それらのテーブルをロードするための、多数のコマンド行ユーティリ ティを備えています。詳細 (特に Oracle、Sybase、MSQLServer メソッドについて) は、"%SYSTEM.SQL"

を参照してください。

例えば、Caché コマンド行から Oracle DDL ファイルをロードするには、以下を実行します。

1. “Caché キューブ” メニューの[ターミナル]コマンドを使用して、Caché ターミナルのセッション を開始します。

2. テーブル定義をロードしたいネームスペースに切り替えます。

ZN "MYNAMESPACE"

3. Oracle DDL コマンド行ユーティリティを呼び出します。

Do $System.SQL.Oracle()

そして、指示に従います。

5

ビュー

Caché SQL は、ビューでクエリを定義、実行する機能をサポートします。

以下のような方法で、ビューを定義できます。

• Caché システム管理ポータル内。

• DDL 文の CREATE VIEW コマンドを使用する場合 (DDL スクリプト、または JDBC、ODBC 経 由)

例えば、以下の DDL 文はEmployeesテーブルを基にしたビューを生成します。

CREATE VIEW EmployeePay AS

SELECT Name, (Salary + Commission) AS TotalPay FROM Employees

すべてのビューは、更新可能にも読み取り専用にもできます。これについて以下のセクションで説 明しています。

ドキュメント内 Caché SQL の使用法 (ページ 40-43)

関連したドキュメント