13 Oracle Database Provider for DRDAにより使用されるPL/SQLパッケージ
Oracle Database Provider for DRDAは、PL/SQLパッケージDBMS_DRDAAS_ADMIN
およびDBMS_DRDAAS
とそれぞれのAPIを使用します。
この2つのパッケージで使用される型マップ値の詳細は、Oracle Database Provider for DRDAでのデータ型のサポートと変換を参照してください。
13.1 DBMS_DRDAAS_ADMINパッケージ
DBMS_DRDAAS_ADMIN
PL/SQLパッケージは、Oracle Database Provider for DRDAユーザーに対してDRDAパッケージ権限を付与します。これには、次の権限が含まれます。
-
DRDAパッケージのバインド
-
DRDAパッケージの削除
-
DRDAパッケージの実行
-
パッケージ値の設定
13.1.1 DBMS_DRDAAS_ADMIN権限の定数
これらの定数は、GRANT_PRIVILEGE
およびREVOKE_PRIVILEGE
で使用されます。
ALL_PRIVILEGE
この権限では、アプリケーション・パッケージのすべての権限がクライアントに付与されます。
BIND_PRIVILEGE
この権限では、クライアントがアプリケーション・パッケージをデータベースにバインドまたは再バインドできるようになります。
COPY_PRIVILEGE
この権限では、クライアントが既存のアプリケーション・パッケージのコピーを作成し、別の名前を付けることができます(オプションで異なるパッケージ・オプションを指定できます)。
EXECUTE_PRIVILEGE
この権限では、クライアントが既存のアプリケーション・パッケージを実行できます。
DROP_PRIVILEGE
この権限では、クライアントが既存のアプリケーション・パッケージを削除できます。
SET_PRIVILEGE
この権限では、クライアントが特定のアプリケーション・パッケージ・オプションを設定できます。このマニュアルに記載されているSET_
XXX
ファンクションを参照してください。
関連トピック
13.1.2 GRANT_PRIVILEGE
DRDAパッケージのユーザーに権限を付与します。
構文
PROCEDURE grant_privilege( privilege_grant IN PLS_INTEGER, collection_id IN VARCHAR2, package_name IN VARCHAR2, user_name IN VARCHAR2);
パラメータ
-
privilege_grant (IN)
付与する権限
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
user_name (IN)
権限を付与するユーザーID
使用例
begin dbms_drdaas_admin.grant_privilege ( DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR1' ); end;
13.1.3 REVOKE_PRIVILEGE
DRDAパッケージのユーザーから権限を取り消します。
構文
PROCEDURE revoke_privilege( privilege_revoke IN PLS_INTEGER, collection_id IN VARCHAR2, package_name IN VARCHAR2, user_name IN VARCHAR2);
パラメータ
-
privilege_revoke (IN)
取り消す権限
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
user_name (IN)
権限を取り消すユーザーID
使用例
begin dbms_drdaas_admin.revoke_privilege ( DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR1' ); end;
13.1.4 DROP_PACKAGE
package_name
で指定されるパッケージのインスタンスをすべて削除します。
構文
procedure DROP_PACKAGE( collection_id IN VARCHAR2, package_name IN VARCHAR2 );
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
使用例
begin dbms_drdaas_admin.drop_package( 'ORACLE', 'MYPACKAGE' ); end;
13.1.5 DROP_PACKAGE_VN
version_name
に基づいてパッケージを削除します。
構文
procedure DROP_PACKAGE_VN( collection_id IN VARCHAR2, package_name IN VARCHAR2, version_name IN VARCHAR2 DEFAULT NULL );
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
version_name (IN)
バージョン名
13.1.6 DROP_PACKAGE_CT
consistency_token
に基づいてパッケージを削除します。
構文
procedure DROP_PACKAGE_CT( collection_id IN VARCHAR2, package_name IN VARCHAR2, consistency_token IN RAW );
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
consistency_token (IN)
整合性トークン
13.1.7 SET_PROFILE
DRDAパッケージのSQL翻訳プロファイル名を設定します。
構文
PROCEDURE set_profile( collection_id IN VARCHAR2, package_name IN VARCHAR2, profile_name IN VARCHAR2);
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
profile_name
(IN)
SQL翻訳プロファイル名
使用例
begin dbms_drdaas_admin.set_profile ( 'ORACLE', 'MYPACKAGE', 'DB2ZOS'); end;
13.1.8 SET_LOCALDATE_FORMAT
DRDAパッケージで使用するローカル日付書式を設定します。
構文
PROCEDURE set_localdate_format( collection_id IN VARCHAR2, package_name IN VARCHAR2, date_format IN VARCHAR2);
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
date_format (IN)
日付書式の文字列
使用例
begin dbms_drdaas_admin.set_localdate_format ( 'ORACLE', 'MYPACKAGE', 'YYYYMMDD'); end;
13.1.9 SET_LOCALTIME_FORMAT
DRDAパッケージで使用するローカル時刻書式を設定します。
構文
PROCEDURE set_localtime_format( collection_id IN VARCHAR2, package_name IN VARCHAR2, time_format IN VARCHAR2);
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
time_format (IN)
時刻書式の文字列
使用例
begin dbms_drdaas_admin.set_localtime_format ( 'ORACLE', 'MYPACKAGE', 'HH:MM:SS'); end;
13.1.10 SET_TYPEMAP
特定の表と列の組合せに関するデータ型マッピング・ルールを設定します。
構文
PROCEDURE set_typemap( collection_id IN VARCHAR2, package_name IN VARCHAR2, table_map IN VARCHAR2, type_map IN VARCHAR2);
パラメータ
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
table_map (IN)
表および列名の式
-
type_map (IN)
数値型の等価式
使用例
begin dbms_drdaas_admin.set_typemap ( 'ORACLE', 'MYPACKAGE', 'SYSIBM.SYSPACKSTMT:COUNT(DISTINCT(NAME))', 'NUMBER=INTEGER'); end;
13.2 DBMS_DRDAASパッケージ
DBMS_DRDAAS
PL/SQLパッケージは、DRDAパッケージを操作します。新しいDRDAパッケージのバインド、既存のDRDAパッケージの属性の変更、DRDAパッケージの削除にこのパッケージを使用できます。
Oracle Database Provider for DRDAは、特定のDRDAパッケージ操作を実行するときにパッケージDBMS_DRDAAS
を使用します。
13.2.1 DBMS_DRDAAS権限の定数
次の定数は、GRANT_PRIVILEGE
およびREVOKE_PRIVILEGES
プロシージャで使用されます。
ALL_PRIVILEGE
この権限では、アプリケーション・パッケージのクライアントにすべての権限が付与されます。
BIND_PRIVILEGE
この権限は、データベースにアプリケーション・パッケージをバインドまたは再バインドすることをクライアントに許可します。
COPY_PRIVILEGE
この権限は、別の名前に既存のアプリケーション・パッケージをコピーすることをクライアントに許可します(必要に応じて、異なるデフォルト・パッケージ・オプションを使用できます)。
EXECUTE_PRIVILEGE
この権限は、既存のアプリケーション・パッケージを実行することをクライアントに許可します。
DROP_PRIVILEGE
この権限は、既存のアプリケーション・パッケージを削除することをクライアントに許可します。
SET_PRIVILEGE
この権限は、特定のアプリケーション・パッケージ・オプションを設定することをクライアントに許可します。このドキュメントに記載されているその他のSET_
XXX
関数を参照してください。
関連トピック
13.2.2 BIND_PACKAGE
DRDAパッケージ定義の先頭部分を作成します。
これは、BGNBND
処理のOracle Database Provider for DRDA部分により内部で使用されます。
構文
PROCEDURE bind_package( collection_id IN VARCHAR2, package_name IN VARCHAR2, version_name IN VARCHAR2 DEFAULT NULL, consistency_token IN RAW, owner IN VARCHAR2, qualifier IN VARCHAR2, isolation IN CHAR, releaseopt IN CHAR, blocking IN CHAR DEFAULT 'N', codepage_s IN NUMBER, codepage_d IN NUMBER, codepage_m IN NUMBER, codepage_x IN NUMBER, degreeioprl IN NUMBER, date_format IN CHAR DEFAULT '3', time_format IN CHAR DEFAULT '3', decimal_delimiter IN CHAR DEFAULT NULL, string_delimiter IN CHAR DEFAULT NULL, decprc IN NUMBER, charsubtype IN CHAR, dynamic_rules IN CHAR DEFAULT NULL, reprepdynsql IN CHAR DEFAULT NULL );
パラメータ
-
collection_id (IN)
: コレクションID -
package_name (IN)
: パッケージ名 -
version_name (IN)
: バージョン名(オプション。デフォルトはNULL
) -
consistency_token (IN)
: 整合性トークン -
owner (IN)
: パッケージの所有者 -
qualifier (IN)
: デフォルトのスキーマ -
isolation (IN)
: 分離レベル(R=RR
、A=ALL
、C=CS
、G=CHG
、N=NC
) -
releaseopt (IN)
: リリース・パッケージ・リソース・オプション -
blocking (IN)
: ブロック・モード(B=
ブロック、N=
ブロックなし) -
codepage_s (IN)
: デフォルトのコードページ(SBCS) -
codepage_d (IN)
: デフォルトのコードページ(DBCS) -
codepage_m (IN)
: デフォルトのコードページ(MBCS) -
codepage_x (IN)
: デフォルトのコードページ(XML) -
degreeioprl (IN)
: IO並列度 -
date_format (IN)
: 日付書式(1=
USA、2=
EUR、3=
ISO、4=
JIS、5=
ローカル) -
time_format (IN)
は時刻書式(1=
USA、2=
EUR、3=
ISO、4=
JIS、5=
ローカル) -
decimal_delimiter (IN)
: 小数点 -
string_delimiter (IN)
: 文字列のデリミタ -
decprc (IN)
: 10進精度(15
または31
) -
charsubtype (IN)
: 文字サブタイプ -
dynamic_rules (IN)
: 動的ルール(将来使用) -
reprepdynsql (IN)
: 動的SQLルールの再準備(将来使用)
使用例
begin dbms_drdaas.bind_package ( 'ORACLE', 'MYPACKAGE', NULL, HEXTORAW('11223344'), 'DRADUSR1', 'PETER', 'C', 'D', 'B', 1208, 1200, 1208, 1208, 1, '3', '3', '.', '''', 31, 'M', 'R', 'Y' ); end;
13.2.3 BIND_STATEMENT
現在バインド中のDRDAパッケージに文を挿入します。
これは、BNDSQLSTT
処理の一部としてOracle Database Provider for DRDAによって内部で使用されます。
構文
PROCEDURE bind_statement( collection_id IN VARCHAR2, package_name IN VARCHAR2, version_name IN VARCHAR2 DEFAULT NULL, consistency_token IN RAW, statement_assumption IN CHAR, statement_no IN NUMBER, section_no IN NUMBER, statement_len IN NUMBER, statement IN CLOB );
パラメータ
-
collection_id (IN)
: コレクションID -
package_name (IN)
はパッケージ名です -
version_name (IN)
はバージョン名です(オプション、デフォルトはNULL
) -
consistency_token (IN)
は一貫性トークンです -
statement_assumption (IN)
: 文の想定事項 -
statement_no (IN)
: 文の番号 -
section_no (IN)
: セクション番号 -
statement_len (IN)
: SQL文テキストの長さ -
statement (IN)
: 文のテキスト
使用例
begin dbms_drdaas.bind_statement ( 'ORACLE', 'MYPACKAGE', NULL, HEXTORAW('11223344'), 'C', 1, 1, 42, 'DECLARE CURSOR C1 AS SELECT EMPLOYEE_ID FROM EMPLOYEES' ); end;
13.2.4 END_BIND
現在バインド中のDRDAパッケージをファイナライズします。(これは、ENDBND
処理の一部としてOracle Database Provider for DRDAによって内部で使用されます。)
構文
PROCEDURE end_bind( collection_id IN VARCHAR2, package_name IN VARCHAR2, version_name IN VARCHAR2 DEFAULT NULL, consistency_token IN RAW, max_sections IN NUMBER );
パラメータ
-
collection_id (IN)
はコレクションIDです -
package_name (IN)
はパッケージ名です -
version_name (IN)
はバージョン名です(オプション、デフォルトはNULL
) -
consistency_token (IN)
: 整合性トークン -
max_sections (IN)
: セクションの最大数
使用例
begin dbms_drdaas.end_bind ( 'ORACLE', 'MYPACKAGE', NULL, HEXTORAW('11223344'), 1 ); end;
13.2.5 GRANT_PRIVILEGE
パッケージに対する権限をユーザーに付与します。
構文
PROCEDURE grant_privilege( privilege_grant IN PLS_INTEGER, collection_id IN VARCHAR2, package_name IN VARCHAR2, user_name IN VARCHAR2 );
パラメータ
-
privilege_grant (IN)
付与する権限
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
user_name (IN)
権限が付与されるユーザーID
使用例
begin dbms_drdaas.grant_privilege ( DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR1' ); end;
13.2.6 REVOKE_PRIVILEGE
DRDAパッケージに関する権限をユーザーから取り消します。
構文
PROCEDURE revoke_privilege( privilege_revoke IN PLS_INTEGER, collection_id IN VARCHAR2, package_name IN VARCHAR2, user_name IN VARCHAR2);
パラメータ
-
privilege_revoke (IN)
取り消す権限
-
collection_id (IN)
コレクションID
-
package_name (IN)
パッケージ名
-
user_name (IN)
権限が取り消されるユーザーID
使用例
begin dbms_drdaas.revoke_privilege ( DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR1' ); end;