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