バージョン 7 フィックスパックには、新しい SQL 組み込みスカラー関数が含まれています。 これらの新しい関数については、「SQL 解説書」の更新分を 参照してください。新しい関数は、データベース・サーバー・コードが新しい サービス・レベルにアップグレードされるとき、各データベースで自動的に 使用可能にはなりません。これらの新しい関数を使用可能にするには、システム管理者が サーバーの各データベースを指定したコマンド db2updv7 を 実行しなければなりません。このコマンドによって、コマンド実行前に作成されたデータベース・オブジェクトが、 新しい関数シグニチャーに一致する可能性のある既存の関数シグニチャーを使用することを保証する 項目がデータベースに作成されます。
MQSeries 関数 (MQDB2 スキーマに定義されているもの) を使用可能化する 方法については、「MQSeries」を参照してください。
>>-+-ABS----+--(式)-------------------------------------------->< '-ABSVAL-'
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 2 から有効になりました。
引き数の絶対値を返します。
引き数は、組み込み数値データ・タイプの値を返す式です。
関数の結果は、引き数と同じデータ・タイプおよび長さ属性を持ちます。 引き数がヌルか、またはデータベースの構成で DFT_SQLMATHWARN が yes に設定されている場合、 結果はヌルになります。引き数がヌルの場合、結果は NULL 値になります。
例:
ABS(-51234)
は値 51234 の INTEGER を返します。
>>-+-DECRYPT_BIN--+---------------------------------------------> '-DECRYPT_CHAR-' >----(--encrypted-data--+--------------------------------+---)-->< '-,--password-string-expression--'
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 3 から有効になりました。
DECRYPT_BIN および DECRYPT_CHAR 関数は、encrypted-data 暗号化 解除の結果である値を返します。 暗号化解除に使用されるパスワードは、 password-string-expression か (SET ENCRYPTION PASSWORD ステートメントで 割り当てられた) ENCRYPTION PASSWORD 値のいずれかです。 DECRYPT_BIN および DECRYPT_CHAR 関数は、ENCRYPT 関数で暗号化された値だけを 暗号化解除できます (SQLSTATE 428FE)。
DECRYPT_BIN 関数の結果は VARCHAR FOR BIT DATA です。 DECRYPT_CHAR 関数の結果は VARCHAR です。 encrypted-data にヒントが組み込まれている場合、 そのヒントは関数によって返されません。 結果の長さ属性は、encrypted-data のデータ・タイプの長さ属性 マイナス 8 バイトになります。 関数によって実際に返される長さの値は、暗号化されたオリジナル・ストリングの長さに一致します。 暗号化ストリングを超えるバイトが encrypted-data に含まれている場合、 それらのバイトは関数によって返されません。 最初の引き数をヌルにすることができる場合、結果もヌルにすることができます。 最初の引き数がヌルであれば、結果は NULL 値になります。
暗号化が行われたときのコード・ページとは別のコード・ページが使用されている、 異なるシステムでデータが暗号化解除されると、暗号化解除された値をデータベース・ コード・ページに変換するとき、長さが超過してしまう可能性があります。 この場合、encrypted-data 値を より大きなバイト数の VARCHAR ストリングに cast する必要があります。
この関数の使用法について詳しくは、38.3.2.3, ENCRYPT および 38.3.2.4, GETHINT も 参照してください。
例
例 1 : この例では、暗号化パスワードを保持する ために ENCRYPTION PASSWORD 値が使用されています。
SET ENCRYPTION PASSWORD = 'Ben123'; INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832'); SELECT DECRYPT_CHAR(SSN) FROM SSN;
返される値は '289-46-8832' です。
例 2 : この例では、暗号化パスワードが明示的に渡されています。
SELECT DECRYPT_CHAR(SSN,'Ben123') FROM SSN;
返される値は '289-46-8832' です。
>>-ENCRYPT------------------------------------------------------> >----(--data-string-expression--+----------------------------------------------------------------+---)-> '-,--password-string-expression--+----------------------------+--' '-,--hint-string-expression--' >--------------------------------------------------------------><
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 3 から有効になりました。
ENCRYPT 関数は、data-string-expression 暗号化の結果である値を返します。 暗号化に使用されるパスワードは、 password-string-expression か (SET ENCRYPTION PASSWORD ステートメントで 割り当てられた) ENCRYPTION PASSWORD 値のいずれかです。
関数の結果データ・タイプは VARCHAR FOR BIT DATA です。
結果の長さ属性:
最初の引き数をヌルにすることができる場合、結果もヌルにすることができます。 最初の引き数がヌルであれば、結果は NULL 値になります。
暗号化された結果が data-string-expression 値よりも 長くなることに注意してください。 そのため、暗号化された値を割り当てる際、その暗号化された値全体が入るだけの 十分なサイズでターゲットを宣言してください。
注:
表列定義: 暗号化データを組み込む列および タイプを定義するとき、以下のようにして常に長さ属性を計算してください。 ヒントのない暗号化データの場合:
非暗号化データの最大長 + 8 バイト + 次の 8 バイト境界までのバイト数 = 暗号化データの列の長さ
ヒントが組み込まれた暗号化データの場合:
非暗号化データの最大長 + 8 バイト + 次の 8 バイト境界までの バイト数 + ヒントの長さ 32 バイト = 暗号化データの列の長さ
推奨されているデータ長よりも短い長さへの割り当てまたは cast は、 暗号化解除の失敗やデータ脱落の原因となります。 ブランクは、短すぎる列に保管するときに切り捨てられる有効な暗号化データ値です。
列の長さ計算のサンプル
非暗号化データの最大長 6 バイト 8 バイト 8 バイト 次の 8 バイト境界までのバイト数 2 バイト --------- 暗号化されたデータ列の長さ 16 バイト 非暗号化データの最大長 32 バイト 8 バイト 8 バイト 次の 8 バイト境界までのバイト数 8 バイト --------- 暗号化されたデータ列の長さ 48 バイト
この関数の使用法について詳しくは、38.3.2.2, DECRYPT_BIN および DECRYPT_CHAR および 38.3.2.4, GETHINT も 参照してください。
例
例 1 : この例では、暗号化パスワードを保持する ために ENCRYPTION PASSWORD 値が使用されています。
SET ENCRYPTION PASSWORD = 'Ben123'; INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832');
例 2 : この例では、暗号化パスワードが明示的に渡されています。
INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832','Ben123','');
例 3 : 暗号化パスワード 'Pacific' を思い浮かべることができるよう、 ヒント 'Ocean' が保管されます。
INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832','Pacific','Ocean');
>>-GETHINT--(--encrypted-data--)-------------------------------><
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 3 から有効になりました。
パスワード・ヒントが encrypted-data に見つかった場合、 GETHINT 関数をそのヒントを返します。 パスワード・ヒントとは、データ所有者がパスワードを思い浮かべる (たとえば、'Ocean' が 'Pacific' を 思い出すヒントになります) ために役立つフレーズです。
ENCRYPT 関数で暗号化された、完全な暗号化データ・ストリングで ある CHAR FOR BIT DATA または VARCHAR FOR BIT DATA 値を返す式です (SQLSTATE 428FE)。
関数の結果は VARCHAR(32) です。 結果はヌルになることがあります。 ヒント・パラメーターが ENCRYPT 関数によって encrypted-data に追加されなかった場合、 または最初の引き数はヌルの場合、結果は NULL 値になります。
この関数の使用法について詳しくは、38.3.2.2, DECRYPT_BIN および DECRYPT_CHAR および 38.3.2.3, ENCRYPT も 参照してください。
例:
この例では、暗号化パスワード 'Pacific' を思い浮かべることができるよう、ヒント 'Ocean' が保管されます。
INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832', 'Pacific','Ocean'); SELECT GETHINT(SSN) FROM EMP;
返される値は 'Ocean' です。
>>-IDENTITY_VAL_LOCAL--(--)------------------------------------><
スキーマは SYSIBM です。
このプロシージャーは、バージョン 7.1 の フィックスパック 3 から有効になりました。
IDENTITY_VAL_LOCAL 関数は、非 deterministic 関数であり、識別列に割り当てられた最新の値を戻します。 この割り当ては、 VALUES 文節を使用した単一行 INSERT ステートメントの結果として発生したものです。 関数には入力パラメーターはありません。
対応する識別列の実際のデータ・タイプに関係なく、結果は DECIMAL(31,0) です。
関数によって返される値は、最新の単一行 INSERT ステートメントで識別されている表の 識別列に割り当てられた値です。 INSERT ステートメントは、識別列を含む表での VALUES 文節を使用して作成されていなければなりません。 INSERT ステートメントは同じレベルで実行しなければなりません 1 (つまり、値は、 次に割り当てられる値で置換されるまでは、ローカルにおいて割り当てられたレベルで使用可能です)。
割り当てられる値は (識別列が GENERATED BY DEFAULT で定義される場合は) ユーザーによって 提供されるか、あるいは DB2 で生成された識別値が提供されます。
関数は、以下の状態の場合、NULL 値を戻します。
関数の結果が以下のステートメントによって影響を受けることはありません。
注:
例:
例 1: 変数 IVAR を、EMPLOYEE 表内の識別列に割り当てられた値に設定します。 これが EMPLOYEE 表への最初の挿入である場合は、IVAR の値は 1 です。
CREATE TABLE EMPLOYEE (EMPNO INTEGER GENERATED ALWAYS AS IDENTITY, NAME CHAR(30), SALARY DECIMAL(5,2), DEPTNO SMALLINT)
例 2: INSERT ステートメントで呼び出された IDENTITY_VAL_LOCAL 関数は、 識別列を持つ表の VALUES 文節をともなう直前の単一行 INSERT ステートメントと関連する値です。 T1 と T2 の 2 つの表があると想定してみてください。T1 と T2 の 両方に、C1 という名前の識別列があります。DB2 は、表 T1 の C1 列に 1 で開始する値を順に生成し、 表 T2 の C1 列に 10 で開始する値を順に生成します。
CREATE TABLE T1 (C1 INTEGER GENERATED ALWAYS AS IDENTITY, C2 INTEGER), CREATE TABLE T2 (C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10), C2 INTEGER), INSERT INTO T1 (C2) VALUES (5), INSERT INTO T1 (C2) VALUES (6), SELECT * FROM T1
which gives a result of:
C1 C2 ----------- ---------- 1 5 2 6
ここで、変数 IVAR の関数を宣言します。
VALUES IDENTITY_VAL_LOCAL() INTO :IVAR
この時点で、IDENTITY_VAL_LOCAL 関数は IVAR に 値 2 を戻します。 DB2 によって割り当てられた最新の値であるためです。 以下の INSERT ステートメントでは、単一行を T2 に挿入します。 ここで、列 C2 は IDENTITY_VAL_LOCAL 関数から値 2 を得ます。
INSERT INTO T2 (C2) VALUES (IDENTITY_VAL_LOCAL()); SELECT * FROM T2 WHERE C1 = DECIMAL(IDENTITY_VAL_LOCAL(),15,0)
returning a result of:
C1 C2 ----------------- ---------- 10. 2
この挿入後の IDENTITY_VAL_LOCAL 関数の呼び出しにより、 結果は、DB2 が T2 の C1 に用に生成した値 10 となります。
トリガーに関係するネストされた環境では、識別列がより低いレベルで割り当てられていても、 ある特定のレベルで割り当てられている識別値を検索するには IDENTITY_VAL_LOCAL 関数を 使用してください。 3 つの表 EMPLOYEE、EMP_ACT、および ACCT_LOG があると仮定します。 EMP_ACT および ACCT_LOG 表に挿入をさらに行う AFTER 挿入トリガーが EMPLOYEE に定義されています。
CREATE TABLE EMPLOYEE (EMPNO SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1000), NAME CHAR(30), SALARY DECIMAL(5,2), DEPTNO SMALLINT); CREATE TABLE EMP_ACT (ACNT_NUM SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1), EMPNO SMALLINT); CREATE TABLE ACCT_LOG (ID SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 100), ACNT_NUM SMALLINT, EMPNO SMALLINT); CREATE TRIGGER NEW_HIRE AFTER INSERT ON EMPLOYEE REFERENCING NEW AS NEW_EMP FOR EACH ROW MODE DB2SQL BEGIN ATOMIC INSERT INTO EMP_ACT (EMPNO) VALUES (NEW_EMP.EMPNO); INSERT INTO ACCT_LOG (ACNT_NUM EMPNO) VALUES (IDENTITY_VAL_LOCAL(), NEW_EMP.EMPNO); END
最初にトリガーされる INSERT ステートメントは、 行を EMP_ACT 表に挿入します。 この INSERT ステートメントは、EMPLOYEE 表の EMPNO 列のトリガー変換変数を使用して、 EMPLOYEE 表の EMPNO 列の識別値を EMP_ACT 表の EMPNO 列にコピーするよう指示します。 EMPLOYEE 表の EMPNO 列に割り当てられている値を得るために、 IDENTITY_VAL_LOCAL 関数を使用することはできません。 これは、このネストのレベルで INSERT ステートメントが出されていないことが原因で、 IDENTITY_VAL_LOCAL 関数が EMP_ACT の INSERT の VALUES 文節で呼び出された場合、 NULL 値が返されます。 この EMP_ACT 表の INSERT ステートメントの結果、ACNT_NUM 列の新しい識別列値も 生成されます。
2 番目にトリガーされる INSERT ステートメントは、行を ACCT_LOG 表に挿入します。 このステートメントは IDENTITY_VAL_LOCAL 関数を呼び出し、トリガー処置の 前の INSERT ステートメントで EMP_ACT 表の ACNT_NUM 列に割り当てられた値を、 ACCT_LOG 表の ACNT_NUM 列にコピーするよう指示します。 EMPNO 列は、EMPLOYEE 表の EMPNO 列と同じ値が割り当てられています。
呼び出しアプリケーション (つまり、EMPLOYEE への INSERT が出されるレベル) から、 オリジナル INSERT ステートメントによって EMPLOYEE 表の EMPNO 列に割り当てられた値に IVAR 変数を 設定します。
INSERT INTO EMPLOYEE (NAME, SALARY, DEPTNO) VALUES ('Rupert', 989.99, 50);
オリジナル INSERT ステートメント、 およびトリガー処置すべてが処理された後の 3 つの表の内容:
SELECT EMPNO, SUBSTR(NAME,10) AS NAME, SALARY, DEPTNO FROM EMPLOYEE; EMPNO NAME SALARY DEPTNO ----------- ----------- ---------------------------------- ----------- 1000 Rupert 989.99 50 SELECT ACNT_NUM, EMPNO FROM EMP_ACT; ACNT_NUM EMPNO ----------- ----------- 1 1000 SELECT * FROM ACCT_LOG; ID ACNT_NUM EMPNO ----------- ----------- ----------- 100 1 1000
IDENTITY_VAL_LOCAL 関数の結果は、 同じネスト・レベルで識別列に割り当てられた最新の値になります。 オリジナル INSERT ステートメント、およびトリガー処置すべてが処理された後、 EMPLOYEE 表の EMPNO 列に割り当てられている値が 1000 であるため、 IDENTITY_VAL_LOCAL 関数は値 1000 を返します。 下の VALUES ステートメントによって、IVAR が 1000 に設定されます。 EMP_ACT 表への挿入 (EMPLOYEE 表への挿入の後、より低いネスト・レベルで行われる) は、 この IDENTITY_VAL_LOCAL 関数の呼び出しによって何が返されるかには影響しません。
VALUES IDENTITY_VAL_LOCAL() INTO :IVAR;
ユニコード・データベースでは、ユニコード文字のレパートリー全体が、 これらの文字のユニコード・プロパティーに基づく英大文字 (または小文字) です。 ASCII 文字の横倍角バージョンは、Roman numerals と同様、正しく大文字小文字変換を 行うようになりました。
>>-MQPUBLISH---(------------------------------------------------> >-----+-----------------------------------------------+---------> '-publisher-service--,--+--------------------+--' '-service-policy--,--' >----msg-data----+-----------------------------------+--)------>< '-,--topic--+--------------------+--' | (1) | '-,--correl-id-------'
注:
スキーマは MQDB2 です。
MQPUBLISH 関数はデータを MQSeries に発行します。 この関数を使用するには、MQSeries パブリッシュ/サブスクライブまたは MQSeries Integrator の いずれかをインストールしなければなりません。 詳しくは www.ibm.com/software/MQSeries を参照してください。
MQPUBLISH 関数は、service-policy により定義されているサービス・ポリシーの 品質を使用して、msg-data に含まれているデータを、publisher-service により 指定されている MQSeries パブリッシャーに発行します。 メッセージのオプションのトピックが指定でき、オプションのユーザー定義のメッセージ相関 ID も 指定できます。 この関数は、正常に終了すると '1' の値を返し、正常に終了しないと '0' の値を返します。
例
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) により ストリング "Testing 123" がデフォルト・パブリッシャー・サービス (DB2.DEFAULT.PUBLISHER) に 発行されます。 相関 ID もトピックもメッセージに対して指定されていません。
VALUES MQPUBLISH('Testing 123')
例 2: この例では、ストリング "Testing 345" がトピック "TESTS" で パブリッシャー・サービス "MYPUBLISHER" に発行されます。 デフォルト・ポリシーが使用されていて、相関 ID が指定されていません。
VALUES MQPUBLISH('MYPUBLISHER','Testing 345', 'TESTS')
例 3: この例では、"TEST1" の相関 ID を持つポリシー "MYPOLICY" によりストリング "Testing 678" が パブリッシャー・サービス "MYPUBLISHER" に発行されます。 トピック "TESTS" に関するメッセージが発行されます。
VALUES MQPUBLISH('MYPUBLISHER','MYPOLICY','Testing 678','TESTS','TEST1')
例 4: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用し、 相関 ID を使用せずに、ストリング "Testing 901" がトピック "TESTS" で パブリッシャー・サービス "MYPUBLISHER" に発行されます。
VALUES MQPUBLISH('Testing 901','TESTS')
上記のどの例でも、正常終了の場合は値 '1' が返されます。
>>-MQREAD---(----+------------------------------------------+---> '-receive-service--+--------------------+--' '-,--service-policy--' >----)---------------------------------------------------------><
スキーマは MQDB2 です。
MQREAD 関数は、service-policy に定義されているサービス・ポリシーの 品質を使用して、receive-service によって指定されている MQSeries ロケーションから メッセージを返します。 この操作を実行しても、receive-service に関連するキューからこのメッセージが 除去されることはありませんが、代わりにキューの先頭にあるメッセージが返されます。 戻り値は、このメッセージを含む VARCHAR(4000) です。 戻されるメッセージが使用できない場合、NULL が返されます。
例:
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューの先頭にある メッセージが読み取られます。
VALUES MQREAD()
例 2: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 サービス "MYSERVICE" により指定されているキューの先頭にある メッセージが読み取られます。
VALUES MQREAD('MYSERVICE')
例 3: この例では、ポリシー "MYPOLICY" を使用して、サービス "MYSERVICE" により 指定されているキューの先頭にあるメッセージが読み取られます。
VALUES MQREAD('MYSERVICE','MYPOLICY')
上記の例ではすべて、正常終了するとメッセージの内容が VARCHAR(4000) として返されます。 メッセージが使用できない場合、NULL が返されます。
>>-MQRECEIVE----------------------------------------------------> >----(--+-------------------------------------------------------------+---)-> '-receive-service--+---------------------------------------+--' '-,--service-policy--+---------------+--' '-,--correl-id--' >--------------------------------------------------------------><
スキーマは MQDB2 です。
MQRECEIVE 関数は、サービス・ポリシー service-policy の 品質を使用して、receive-service によって指定されている MQSeries ロケーションからの メッセージを返します。 この操作を実行すると、receive-service に関連するキューからこのメッセージが除去されます。 correl-id が指定されている場合、一致する相関 ID を持つ最初のメッセージが 返されます。 correl-id が指定されていない場合、キューの先頭にあるメッセージが 返されます。 戻り値は、このメッセージを含む VARCHAR(4000) です。 戻されるメッセージが使用できない場合、NULL が返されます。
例:
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューの先頭にある メッセージが受信されます。
VALUES MQRECEIVE()
例 2: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 サービス "MYSERVICE" により指定されているキューの先頭にある メッセージが受信されます。
VALUES MQRECEIVE('MYSERVICE')
例 3: この例では、ポリシー "MYPOLICY" を使用して、サービス "MYSERVICE" により 指定されているキューの先頭にあるメッセージが受信されます。
VALUES MQRECEIVE('MYSERVICE','MYPOLICY')
例 4: この例では、ポリシー "MYPOLICY" を使用して、サービス "MYSERVICE" により 指定されているキューの先頭から '1234' に一致する相関 ID を持つ最初のメッセージが 受信されます。
VALUES MQRECEIVE('MYSERVICE',MYPOLICY','1234')
上記の例ではすべて、正常終了すると メッセージの内容が VARCHAR(4000) として返されます。 メッセージが使用できない場合、NULL が返されます。
>>-MQSEND---(----+------------------------------------------+---> '-send-service--,--+--------------------+--' '-service-policy--,--' >----msg-data----+--------------------+--)--------------------->< | (1) | '-,--correl-id-------'
注:
スキーマは MQDB2 です。
MQSEND 関数は、service-policy により定義されているサービス・ポリシーの 品質を使用して、msg-data に含まれているデータを、send-service により 指定されている MQSeries ロケーションに送信します。 任意指定のユーザー定義メッセージ相関 ID は、correl-id によって指定することができます。 この関数は、正常に終了すると '1' の値を返し、正常に終了しないと '0' の値を返します。
例:
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 相関 ID は使用せずに、ストリング "Testing 123" がデフォルト・サービス (DB2.DEFAULT.SERVICE) に 送信されます。
VALUES MQSEND('Testing 123')
例 2: この例では、ポリシー "MYPOLICY" を使用して、相関 ID は使用せずに、 ストリング "Testing 345" がサービス "MYSERVICE" に送信されます。
VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 345')
例 3: この例では、ポリシー "MYPOLICY" と相関 ID "TEST3" を使用して、 ストリング "Testing 678" がサービス "MYSERVICE" に送信されます。
VALUES MQSEND('MYSERVICE','MYPOLICY','Testing 678','TEST3')
例 4: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 相関 ID は使用せずに、ストリング "Testing 901" がサービス "MYSERVICE" に 送信されます。
VALUES MQSEND('MYSERVICE','Testing 901')
上記のすべての例で、正常終了の場合は、'1' のスカラー値が返されます。
>>-MQSUBSCRIBE---(----------------------------------------------> >-----+------------------------------------------------+--------> '-subscriber-service--,--+--------------------+--' '-service-policy--,--' >----topic---)-------------------------------------------------><
スキーマは MQDB2 です。
MQSUBSCRIBE 関数は、指定のトピックで発行された MQSeries メッセージに関連させるために 使用されます。 subscriber-service は、指定のトピックに一致するメッセージの論理宛先を指定します。 topic に一致するメッセージが subscriber-service より定義されている キューに投入され、その後に MQREAD、MQRECEIVE、MQREADALL、または MQRECEIVEALL に呼び出し が出されると、そのメッセージの読み取りまたは受信が可能となります。 この機能は、MQSeries ベースのパブリッシュおよびサブスクライブ・システム (MQSeries Integrator、 MQSeries パブリッシュ/サブスクライブなど) のインストールおよび構成を必要とします。 詳しくは www.ibm.com/software/MQSeries を参照してください。
この関数は、正常に終了すると '1' の値を返し、正常に終了しないと '0' の値を返します。 この関数が正常に実行されると、パブリッシュおよびサブスクライブ・サーバーが トピックに一致するメッセージを subscriber-service によって定義されている サービス・ポイントに転送します。
例:
例 1: この例では、トピック "Weather" を含むメッセージが扱われます。 デフォルトの subscriber-service (DB2.DEFAULT.SUBSCRIBER) がサブスクライバーとして 登録されます。 デフォルトの service-policy (DB2.DEFAULT.POLICY) がサービスの品質を 指定します。
VALUES MQSUBSCRIBE('Weather')
例 2: この例は、"Stocks" を含むメッセージに関するサブスクライバーの デモンストレーションです。 サブスクライバーが "PORTFOLIO-UPDATES" としてポリシー "BASIC-POLICY" で 登録されます。
VALUES MQSUBSCRIBE('PORTFOLIO-UPDATES','BASIC-POLICY','Stocks')
上記のすべての例で、正常終了すると '1' のスカラー値が返されます。
>>-MQUNSUBSCRIBE---(--------------------------------------------> >-----+------------------------------------------------+--------> '-subscriber-service--,--+--------------------+--' '-service-policy--,--' >----topic---)-------------------------------------------------><
スキーマは MQDB2 です。
MQUNSUBSCRIBE 関数は、既存のメッセージ・サブスクリプションを抹消するために使用されます。 取り消されたサブスクリプションを識別するために subscriber-service、service-policy、 および topic が使用されます。 この機能は、MQSeries ベースのパブリッシュおよびサブスクライブ・システム (MQSeries Integrator、 MQSeries パブリッシュ/サブスクライブなど) のインストールおよび構成を必要とします。 詳しくは www.ibm.com/software/MQSeries を参照してください。
この関数は、正常に終了すると '1' の値を返し、正常に終了しないと '0' の値を返します。 この機能が正常に実行されると、結果として、パブリッシュおよびサブスクライブ・サーバーが、 指定のパラメーターにより定義されたサブスクリプションを除去します。 指定の topic を持つメッセージは、subscriber-service により 定義されている論理宛先に送信されなくなります。
例:
例 1: この例では、トピック "Weather" を含むメッセージに対する関連が取り消されます。 デフォルトの subscriber-service (DB2.DEFAULT.SUBSCRIBER) がアンサブスクライバーとして 登録されます。 デフォルトの service-policy (DB2.DEFAULT.POLICY) がサービスの品質を 指定します。
VALUES MQUNSUBSCRIBE('Weather')
例 2: この例は、"Stocks" を含むメッセージに対する関連を取り消す サブスクライバーのデモンストレーションです。 サブスクライバーが "PORTFOLIO-UPDATES" としてポリシー "BASIC-POLICY" で 登録されます。
VALUES MQUNSUBSCRIBE('PORTFOLIO-UPDATES','BASIC-POLICY','Stocks')
上記の例は正常終了すれば '1' のスカラー値が返され、正常に終了しなければ '0' の スカラー値が返されます。
>>-MULTIPLY_ALT-------------------------------------------------> >----(exact_numeric_expression, exact_numeric_expression)------><
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 2 から有効になりました。
MULTIPLY_ALT スカラー関数は、2 つの引き数の積を 10 進数として返します。 これは特に、引き数の精度の合計が 31 を超えるときに、乗算の演算子の代替として提供されます。
引き数には組み込み数値データ・タイプ (DECIMAL、BIGINT、INTEGER、または SMALLINT) を 指定できます。
関数の結果は DECIMAL です。結果の精度と位取りは、以下のように決定されます。 記号 p および s を使用して最初の引き数の精度と位取りを、記号 p' および s' を使用して 2 番目の 引き数の精度と位取りを指定します。
少なくとも 1 つの引き数がヌルであるか、または DFT_SQLMATHWARN が yes に 設定されてデータベースが構成されている場合、結果はヌルになることが可能です。 引き数の 1 つがヌルの場合、結果は NULL 値になります。
MULTIPLY_ALT 関数は、少なくとも 3 の位取りが必要で、精度の合計が 31 を 超えるような 10 進数の計算を実行するときは、乗算演算子よりもよい選択です。 このような場合、内部計算が実行されるため、オーバーフローが回避されます。 最終結果は、位取りを合わせるために必要な切り捨てを使用して、結果データ・タイプに 割り当てられます。最終結果のオーバーフローは、位取りが 3 のときはまだ 起こり得ることに注意してください。
以下は、MULTIPLY_ALT と乗算演算子を使用した結果タイプの比較の例です。
引き数タイプ 1 | 引き数タイプ 2 | MULTIPLY_ALT を使用した結果 | 乗算演算子を使用した結果 |
---|---|---|---|
DECIMAL(31,3) | DECIMAL(15,8) | DECIMAL(31,3) | DECIMAL(31,11) |
DECIMAL(26,23) | DECIMAL(10,1) | DECIMAL(31,19) | DECIMAL(31,24) |
DECIMAL(18,17) | DECIMAL(20,19) | DECIMAL(31,29) | DECIMAL(31,31) |
DECIMAL(16,3) | DECIMAL(17,8) | DECIMAL(31,9) | DECIMAL(31,11) |
DECIMAL(26,5) | DECIMAL(11,0) | DECIMAL(31,3) | DECIMAL(31,5) |
DECIMAL(21,1) | DECIMAL(15,1) | DECIMAL(31,2) | DECIMAL(31,2) |
最初の引き数のデータ・タイプが DECIMAL(26,3)、2 番目の引き数の データ・タイプが DECIMAL(9,8) の 2 つの値を乗算します。結果の データ・タイプは DECIMAL(31,7) です。
values multiply_alt(98765432109876543210987.654,5.43210987) 1--------------------------------- 536504678578875294857887.5277415
これら 2 つの数値の積の すべては 536504678578875294857887.52774154498 になりますが、最後の 4 桁は 結果のデータ・タイプの位取りに一致させるために切り捨てられます。同じ値を持つ 乗算演算子を使用すると、結果のデータ・タイプが DECIMAL(31,11) で、結果の値の 小数点の左側が 24 桁になりますが、結果のデータ・タイプは 20 桁のみを サポートします。
>>-REC2XML---(--decimal-constant---,--format-string-------------> >----,--row-tag-string----+------------------------+--)-------->< | .------------------. | | V | | '----,--column-name---+--'
スキーマは SYSIBM です。
REC2XML 関数は、XML タグ形式のストリングで列名と列値を含むものを返します。
関数の結果の長さを計算するには decimal-constant 値が使用されます。 文字データ・タイプを持つ列では、列の長さ属性が結果の長さに追加される前に この拡張係数により複数にされます。
拡張を指定しない場合、1.0 の値を使用します。 1.0 未満の値を指定した場合、計算される結果の長さが短くなります。 結果ストリングの実際の長さがこの関数の計算された結果の長さより長い場合、 エラーが発生します (SQLSTATE 22001)。
format-string は 大文字小文字の区別をするため、大文字を認識させるには次の値を指定する必要があります。
>>-<--row-tag-string-->-----------------------------------------> .---------------------------------------------------------------------. V | >--------<--column-name--=--"column-name"--+->--column-value--</--列-->--+--+> '-null="true"--</-------------' >----</--row-tag-string-->-------------------------------------><
列名は有効な XML 属性値である場合も、そうではない場合もあります。 無効な XML 属性値である列名の場合、列名が結果のストリングに含まれる前に 列名の文字が置換されます。
列値は有効な XML エレメント値である場合も、そうではない場合もあります。 format-string COLATTVAL が指定されているとき、 列値が結果のストリングに含まれる前に、無効な XML エレメント値 になっている列値が置換されます。 format-string COLATTVAL_XML が指定されている場合、列値の文字が 置換されます (列名の文字も置換されることに注意してください)。
空ストリングが指定されていると、 行の値が想定されます。
1 つ以上のブランク文字のストリングが指定されている 場合、最初の row-tag-string も最後の row-tag-string (不等号括弧区切り文字を含む) も 結果のストリングには表示されません。
同じ列名を 2 回以上指定することはできません (SQLSTATE 42734)。
この関数の結果は VARCHAR です。 最大長は 32672 バイトです (SQLSTATE 54006)。
以下の呼び出しを考慮してください:
REC2XML (dc, fs, rt, c1, c2, ..., cn)
'<' CONCAT rt CONCAT '>' CONCAT y1 CONCAT y2 CONCAT ... CONCAT yn CONCAT '</' CONCAT rt CONCAT '>'
yn は 次の値と同等です:
'<column name="' CONCAT xvcn CONCAT vn
vn は次の値と同等です:
'">' CONCAT rn CONCAT '</column>'
(列がヌルではない場合)、および
'" null="true"/>'
(列の値がヌルの場合)。
xvcn は cn の 列名のストリング表記と同等です。 表 29 に表示される文字は対応する表記で置き換えられます。 これにより、結果として表示されるストリングは有効な XML 属性またはエレメント値トークンであることが 保証されます。
rn は 表 28 で示されている ストリング表記と同等です。
結果列値:
列のデータ・タイプと、指定されている実際の format-string に基づいて、
表の列値を結果のストリングに連結する前にその列値をトランスフォームすることが
できます。
以下の表は、列値で行われたトランスフォーメーションを示します。
cn のデータ・タイプ | rn |
---|---|
CHAR, VARCHAR | 値はストリングです。 format-string が "_XML" という文字で終わっていない場合、 示されているように cn の各文字が 表 29 の 対応する置換表示で置き換えられます。 長さ属性は次のようになります: dc * cn の長さ属性。 |
SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE | 値は LTRIM(RTRIM(CHAR(cn))) です。 長さ属性は CHAR(cn) の結果の長さです。 小数点文字は必ずピリオドです。 |
DATE | 値は CHAR(cn, ISO) です。 長さ属性は CHAR(cn, ISO) の結果の長さです。 |
TIME | 値は CHAR(cn, JIS) です。 長さ属性は CHAR(cn, JIS) の結果の長さです。 |
TIMESTAMP | 値は CHAR(cn) です。 長さ属性は CHAR(cn) の結果の長さです。 |
文字置換:
format-string に対して指定されている値に応じて、列名が有効 XML 属性値を形成し、 列値が有効 XML エレメント値を形成することを確認するために、列名と列値にある 特定の文字が置換されます。
< は < で置換されます。 |
> は > で置換されます。 |
" は " で置換されます。 |
& は & で置換されます。 |
' は ' で置換されます。 |
例:
SELECT REC2XML (1.0, 'COLATTVAL', '', DEPTNO, MGRNO, ADMRDEPT) FROM DEPARTMENT WHERE DEPTNO = 'D01'
この例では、 以下の VARCHAR(117) ストリングが返されます。
<row> <column name="DEPTNO">D01</column> <column name="MGRNO" null="true"/> <column name="ADMRDEPT">A00</column> </row>
拡張係数 1.0 の 拡張係数を使用した REC2XML 呼び出し (下記参照) の長さ属性は 128 になります ('<row>' および '</row>' オーバーヘッドに 11、 列名に 21、'<column name=', '>', '</column>' および二重引用符に 75、 CLASS_CODE データに 7、DAY データに 6、STARTING データに 8)。 '&' 文字および '<' 文字が置換されるため、 拡張係数が 1.0 だと不十分です。 新しい形式の CLASS_CODE データの場合、関数の長さ属性を 7 文字から 14 文字に 増やさなければなりません。
ただし、DAY 値は 1 桁より 大きくならないため、余分な 5 桁が計算されて、決して使用されない長さになります。 そのため拡張時には、2 だけ増やす必要があります。 CLASS_CODE が引き数リストにある唯一の文字ストリング列であるため、 これは拡張係数が適用される唯一の列値です。 長さの増分 2 を得るためには、9/7 (約 1.2857) の拡張係数が必要となります。 1.3 の拡張係数が使用されます。
SELECT REC2XML (1.3, 'COLATTVAL', 'record', CLASS_CODE, DAY, STARTING) FROM CL_SCHED WHERE CLASS_CODE = '&43<FIE'
以下のストリングが返されます。
<record> <column name="CLASS_CODE">&43<FIE</column> <column name="DAY">5</column> <column name="STARTING">06:45:00</column> </record>
SELECT REC2XML (1.3,'COLATTVAL', '', Class, "time<noon") FROM (SELECT Class_code, Starting FROM Cl_sched WHERE Starting < '12:00:00') AS Early (Class, "time<noon")この照会では 以下のストリングが返されます。
<row> <column name="CLASS">&43<FIE</column> <column name="time<noon>06:45:00</column> </row>
SELECT REC2XML (1.0,'COLATTVAL_XML', '', EMPNO, RESUME_XML) FROM (SELECT EMPNO, CAST(RESUME as VARCHAR(3500)) as RESUME_XML FROM EMP_RESUME WHERE RESUME_FORMAT = 'XML') AS EMP_RESUME_XML
>>-ROUND---(expression1, expression2)--------------------------><
スキーマは SYSIBM です。
この関数は、バージョン 7.1 のフィックスパック 2 から有効になりました。
ROUND 関数は、expression2 が正の場合は小数点の右側、 expression2 がゼロまたは負の場合は小数点の左側の、 expression2 の桁数に丸められた expression1 を 返します。
expression1 が正の場合、値 5 は次に 大きい正の数値に丸められます。たとえば、ROUND(3.5,0) = 4 のようになります。 expression1 が負の場合、値 5 は次に 小さい負の数値に丸められます。たとえば、ROUND(-3.5,0) = -4 のようになります。
expression2 が負ではない場合、 expression1 は小数点の右側の、expression2 の 桁数の絶対値に丸められます。expression2 の 値が expression1 の位取りより大きい場合、 1 大きい精度を持つ結果値を除いて、値は変更されません。たとえば、 ROUND(748.58,5) = 748.58 のようになります。ここでの精度は 6 で、 位取りは 2 のままです。
expression2 が 負の場合、expression1 は小数点の左側の、 expression2+1 の桁数の絶対値に丸められます。
負の expression2 の絶対値が小数点の左側の 桁数より大きい場合、結果は 0 になります。たとえば、ROUND(748.58,-4) = 0 のように なります。
結果のデータ・タイプおよび長さ属性は、最初の引き数のデータ・タイプおよび 長さ属性と同じになります。 ただし、expression1 が DECIMAL または NUMERIC であり、 精度が 31 より小さいときに精度が 1 増加する場合を除きます。 たとえば、データ・タイプが DECIMAL(5,2) の引き数の結果は DECIMAL(6,2) に なります。データ・タイプ DECIMAL(31,2) の引き数は DECIMAL(31,2) になります。 位取りは最初の引き数の位取りと同じです。
引き数がヌルか、またはデータベースの構成で DFT_SQLMATHWARN が yes に設定されている場合、 結果はヌルになります。 引き数がヌルの場合、結果は NULL 値になります。
数値 873.726 を小数点 2, 1, 0, -1, -2, -3, および -4 にそれぞれ計算します。
VALUES (ROUND(873.726, 2), ROUND(873.726, 1), ROUND(873.726, 0), ROUND(873.726,-1), ROUND(873.726,-2), ROUND(873.726,-3), ROUND(873.726,-4) )
この例は次の値を返します。
1 2 3 4 5 6 7 --------- --------- --------- --------- --------- --------- --------- 873.730 873.700 874.000 870.000 900.000 1000.000 0.000
正および負の数を 計算します。
VALUES (ROUND(3.5, 0), ROUND(3.1, 0), ROUND(-3.1, 0), ROUND(-3.5,0) )
この例は次の値を返します。
1 2 3 4 ---- ---- ---- ---- 4.0 3.0 -3.0 -4.0
この関数の記述を以下のように変更してください。
スキーマは SYSFUN です。
年の週の引き数を、1-53 の整数値として戻します。 週は Monday で開始し、常に 7 日です。 Week 1 は年の最初の週で、January 4 を含む最初の週である Thursday を含みます。 よって、年の初めの 3 日間までを、前の年の最終週として表示することが できます。逆に、年の最後の 3 日間までを、翌年の最初の週として 表示することもできます。
引き数は日付、タイム・スタンプ、あるいは CLOB でも LONG VARCHAR でもない 日付かタイム・スタンプを表す有効な文字ストリングでなければなりません。
関数の結果は INTEGER です。引き数がヌルである場合、結果がヌルになることもあります。
例:
以下のリストは、WEEK_ISO および DAYOFWEEK_ISO の結果例です。
DATE WEEK_ISO DAYOFWEEK_ISO ---------- ----------- ------------- 1997-12-28 52 7 1997-12-31 1 3 1998-01-01 1 4 1999-01-01 53 5 1999-01-04 1 1 1999-12-31 52 5 2000-01-01 52 6 2000-01-03 1 1
>>-MQREADALL---(------------------------------------------------> >-----+------------------------------------------+--------------> '-receive-service--+--------------------+--' '-,--service-policy--' >-----+-----------+--)----------------------------------------->< '-num-rows--'
スキーマは MQDB2 です。
MQREADALL 関数は、サービス・ポリシー service-policy の品質を 使用して、receive-service によって指定されている MQSeries ロケーションからの メッセージおよびメッセージ・メタデータを返します。 この操作を実行しても、receive-service に関連するキューからこのメッセージが 除去されることはありません。
num-rows が指定されている場合、num-rows メッセージの最大数が 返されます。 num-rows が指定されていない場合、使用可能なすべてのメッセージが 返されます。 返される表には以下の列が含まれます。
例:
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューから すべてのメッセージが受信されます。 メッセージとすべてのメタデータが表として返されます。
SELECT * FROM table (MQREADALL()) T
例 2: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 サービス MYSERVICE により指定されているキューの先頭からすべてのメッセージが受信されます。 MSG 列と CORRELID 列だけが返されます。
SELECT T.MSG, T.CORRELID FROM table (MQREADALL('MYSERVICE')) T
例 3: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューの先頭が 読み取られます。 '1234' の CORRELID を持つメッセージだけが返されます。 列はすべて返されます。
SELECT * FROM table (MQREADALL()) T WHERE T.CORRELID = '1234'
例 4: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューの先頭から 最初の 10 メッセージが受信されます。 列はすべて返されます。
SELECT * FROM table (MQREADALL(10)) T
>>-MQRECEIVEALL---(---------------------------------------------> >-----+-------------------------------------------------------------+> '-receive-service--+---------------------------------------+--' '-,--service-policy--+---------------+--' '-,--correl-id--' >-----+--------------------+--)-------------------------------->< '-+----+---num-rows--' '-,--'
スキーマは MQDB2 です。
MQRECEIVEALL 関数は、サービス・ポリシー service-policy の品質を 使用して、receive-service によって指定されている MQSeries ロケーションからの メッセージおよびメッセージ・メタデータを返します。 この操作を実行すると、receive-service に関連するキューからこのメッセージが除去されます。
correl-id が指定されている場合、一致する相関 ID を持つメッセージだけが 返されます。 correl-id が指定されていない場合、キューの先頭にあるメッセージが 返されます。
num-rows が指定されている場合、num-rows メッセージの最大数が 返されます。 num-rows が指定されていない場合、返せるすべてのメッセージが 返されます。 返される表には以下の列が含まれます。
例:
例 1: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューから すべてのメッセージが受信されます。 メッセージとすべてのメタデータが表として返されます。
SELECT * FROM table (MQRECEIVEALL()) T
例 2: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 サービス MYSERVICE により指定されているキューの先頭からすべてのメッセージが受信されます。 MSG 列と CORRELID 列だけが返されます。
SELECT T.MSG, T.CORRELID FROM table (MQRECEIVEALL('MYSERVICE')) T
例 3: この例では、ポリシー "MYPOLICY" を使用して、サービス "MYSERVICE" により 指定されているキューの先頭からすべてのメッセージが受信されます。 '1234' の CORRELID を持つメッセージだけが返されます。 MSG 列と CORRELID 列だけが返されます。
SELECT T.MSG, T.CORRELID FROM table (MQRECEIVEALL('MYSERVICE','MYPOLICY','1234')) T
例 4: この例では、デフォルト・ポリシー (DB2.DEFAULT.POLICY) を使用して、 デフォルト・サービス (DB2.DEFAULT.SERVICE) により指定されているキューの先頭から 最初の 10 メッセージが受信されます。 列はすべて返されます。
SELECT * FROM table (MQRECEIVEALL(10)) T
>>-GET_ROUTINE_SAR----------------------------------------------> >----(--sarblob--,--タイプ--,--routine_name_string--)----------><
スキーマは SYSFUN です。
このプロシージャーは、バージョン 7.1 の フィックスパック 3 から有効になりました。
GET_ROUTINE_SAR プロシージャーは、同じオペレーティング・システムで同じレベルを 実行している別のデータベース・サーバーで、同じルーチンをインストールするために 必要な情報を検索します。情報は、SQL アーカイブ・ファイルを表す単一 BLOB ストリングへ 取り出されます。GET_ROUTINE_SAR プロシージャーの呼び出し元は、DBADM 権限を持っている 必要があります。
ルーチンの修飾名は、検索するルーチンを決定するために使用されます。 見つかったルーチンが SQL ルーチンでなければ、エラーが起こります (SQLSTATE 428F7)。 特定の名前を使用しないと、複数のルーチンを指す可能性があり、エラーが起こります (SQLSTATE 42725)。 これが起きた場合、ルーチンを取得するには、特定の名前のルーチンを 指定しなければなりません。
SAR ファイルは、サーバーで使用可能ではない可能性のあるバインド・ファイルを組み込む 必要があります。バインド・ファイルが見つからず、SAR ファイルに保管できない場合、 エラーが起こります (SQLSTATE 55045)。
>>-PUT_ROUTINE_SAR----------------------------------------------> >----(--sarblob--+-------------------------------------+--)---->< '-,--new_owner--,--use_register_flag--'
スキーマは SYSFUN です。
このプロシージャーは、バージョン 7.1 の フィックスパック 3 から有効になりました。
PUT_ROUTINE_SAR プロシージャーは、サーバーで SQL ルーチンを作成するために必要な ファイルを渡し、ルーチンを定義します。PUT_ROUTINE_SAR プロシージャーの呼び出し元は、 DBADM 権限を持っている必要があります。
値が 1 の場合、ルーチン定義 (ルーチンの名前を含む) の非修飾オブジェクト名に CURRENT SCHEMA が 使用され、ルーチン定義の非修飾ルーチンとデータ・タイプを解決するために CURRENT PATH が使用されます。 use-registers-flag が指定されない場合、振る舞いは 0 が指定されたときと同じです。
sarblob に含まれる識別情報が、入力が環境とって適切かを確認するために 検査されます。そうでない場合、エラーが起こります (SQLSTATE 55046)。 PUT_ROUTINE_SAR プロシージャーは次に、sarblob の内容を使用してサーバーでルーチンを定義します。
sarblob 引き数の内容は SQL アーカイブ・ファイルを構成する個々のファイルへ抽出されます。 共有ライブラリーとバインド・ファイルは、1 次ディレクトリーの ファイルに書き込まれます。環境は、コンパイルおよびリンクが不要であること、 共有ライブラリーとバインド・ファイルの場所が使用可能であることを、 ルーチン定義ステートメント処理に認識させるように設定されます。 DDL ファイルの内容が、ルーチン定義ステートメントを動的に実行するために 使用されます。
このステートメントの処理は、他のインターフェースを使用してルーチン定義 ステートメントを実行するのと同じエラーを起こす可能性があります。ルーチン定義 処理中に、共有ライブラリーとバインド・ファイルの存在が通知され、プリコンパイル、 コンパイル、およびリンクのステップがスキップされます。バインド・ファイルは バインド処理中に使用され、両方のファイルの内容が SQL ルーチンの通常ディレクトリーに コピーされます。