DBMS_MGD_ID_UTLパッケージには、次に示す複数のユーティリティ・サブプログラムを構成する様々なファンクションおよびプロシージャが含まれています。
JavaおよびPL/SQLのロギング・レベルを設定および取得するロギング・ユーティリティ
プロキシ・サーバーのホストとポートを設定および設定解除するための2つのプロシージャで構成されるプロキシ・ユーティリティ
メタデータの管理に使用されるファンクションおよびプロシージャで構成されるメタデータ・ユーティリティ
|
関連項目: 詳細は、『Oracle Database開発ガイド』を参照してください。 |
この章では、これらのユーティリティ・サブプログラムについてそれぞれ説明します。次の項目が含まれています。
この章の例では、次のコマンド・セットを実行してから各スクリプトを実行することを想定しています。
SQL> connect / as sysdba;
Connected.
SQL> create user mgduser identified by password;
SQL> grant connect, resource to mgduser;
SQL> connect mgduser
Enter password: mgduserpassword
Connected.
SQL> set serveroutput on;
catmgd.sqlスクリプトを実行して、DBMS_MGD_ID_UTLパッケージおよび識別コード・パッケージ・スキーマ・オブジェクトをMGDSYSスキーマにロードする必要があります。
DBMS_MGD_ID_UTLは、MGDSYS所有のパッケージです。無名PL/SQLブロックからコールされたすべてのDBMS_MGD_ID_UTLサブプログラムは、現行のユーザーの権限を使用して実行されます。
ユーザーには、DBMS_MGD_ID_UTLパッケージとそのサブプログラムを使用するために、接続ロールおよびリソース・ロールが付与されている必要があります。
EXECUTE権限は、MGD_ID、MGD_ID_COMPONENTおよびMGD_ID_COMPONENT_VARRAYの各ADTと、このパッケージDBMS_MGD_ID_UTLについてPUBLICに付与されます。
SELECTまたはREAD権限は、読取り専用ビューMGD_ID_CATEGORYおよびMGD_ID_SCHEME、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEME、表MGD_ID_XML_VALIDATOR、順序MGD$SEQUENCE_CATEGORYについてPUBLICに付与されます。
INSERT、UPDATEおよびDELETE権限は、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEMEについてPUBLICに付与されます。
パブリック・シノニムは、MGD_ID、MGD_ID_COMPONENTおよびMGD_ID_COMPONENT_VARRAYの各ADTと、このパッケージDBMS_MGD_ID_UTLに加え、読取り専用ビューMGD_ID_CATEGORYおよびMGD_ID_SCHEME、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEME、表MGD_ID_XML_VALIDATORについて同じ名前で作成されます。
表96-2はDBMS_MGD_ID_UTLの例外を示しています。
表96-2 DBMS_MGD_ID_UTLパッケージで発生する例外
| 名前 | エラー・コード | 説明 |
|---|---|---|
|
|
-55200 |
タグ・データの変換中に、Java例外が発生しました。 |
|
|
-55201 |
指定したカテゴリは検出されていません。 |
|
|
-55202 |
タグ・データの変換中に、指定したスキームが検出されていません。 |
|
|
-55203 |
タグ・データの変換中に、指定したレベルが検出されていません。 |
|
|
-55204 |
タグ・データの変換中に、指定したオプションが検出されていません。 |
|
|
-55205 |
タグ・データの変換中に、フィールドの検証操作に失敗しました。 |
|
|
-55206 |
タグ・データの変換中に、定義されていないフィールドが検出されました。 |
|
|
-55207 |
タグ・データの変換中に、ルール評価操作に失敗しました。 |
|
|
-55208 |
タグ・データの変換中に、検出された一致したレベル数が多すぎます。 |
表96-3に、DBMS_MGD_ID_UTLパッケージのユーティリティ・サブプログラムを示します。
特に明記されていないかぎり、DBMS_MGD_ID_UTLパッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別が必要な場合は、値を二重引用符で囲んでください。
表96-3 DBMS_MGD_ID_UTLパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
既存のカテゴリに、タグ・データ変換スキームを追加します。 |
|
|
新規カテゴリまたは新バージョンのカテゴリを作成します。 |
|
|
EPCglobalタグ・データ変換(TDT)XMLをOracleタグ・データ変換XMLに変換します。 |
|
|
カテゴリ名およびカテゴリ・バージョンが指定された場合に、カテゴリIDを戻します。 |
|
|
指定したスキームに対応するセミコロン(';')区切りのすべての関連コンポーネント名を戻します。 |
|
|
指定したスキームに対応するセミコロン(';')区切りのエンコード(フォーマット)のリストを戻します。 |
|
|
現在のJavaトレース・ロギング・レベルを表す整数を戻します。 |
|
GET_PLSQL_LOGGING_LEVELファンクション |
現在のPL/SQLトレース・ロギング・レベルを表す整数を戻します。 |
|
|
指定したカテゴリに対応するセミコロン(';')区切りのスキーム名のリストを戻します。 |
|
|
指定したスキームに対応するOracleタグ・データ変換XMLを戻します。 |
|
|
Oracle Databaseタグ・データ変換スキーマを戻します。 |
|
|
指定したカテゴリに対応するJavaスタックのメタデータ情報をリフレッシュします。 |
|
|
|
|
|
プロキシ・サーバーのホストおよびポートの設定を解除します。 |
|
|
カテゴリからタグ・データ変換スキームを削除します。 |
|
|
Javaロギング・レベルを設定します。 |
|
|
PL/SQLトレース・ロギング・レベルを設定します。 |
|
|
インターネット・アクセス用のプロキシ・サーバーのホストおよびポートを設定します。 |
|
|
Oracleタグ・データ変換スキーマに対して、入力タグ・データ変換XMLを検証します。 |
このプロシージャは、既存のカテゴリにタグ・データ変換スキームを追加します。
例
この例は、次のいずれかのアクションを実行します。
カテゴリを作成します。
MGD_SAMPLE_CATEGORYカテゴリにコントラクタ・スキームおよび従業員スキームを追加します。
MGD_SAMPLE_CATEGORYスキームを検証します。
コントラクタ・スキームおよび従業員スキームのタグ変換をテストします。
コントラクタ・スキームを削除します。
コントラクタ・スキームのタグ変換のテストを実行すると、削除したコントラクタ・スキームに対して予測される例外が戻されます。
従業員スキームのタグ変換のテストを実行すると、予測される値が戻されます。
MGD_SAMPLE_CATEGORYカテゴリを削除します。
--contents of add_scheme2.sql
SET LINESIZE 160
---------------------------------------------------------------------
---CREATE CATEGORY, ADD_SCHEME, REMOVE_SCHEME, REMOVE_CATEGORY-------
---------------------------------------------------------------------
DECLARE
amt NUMBER;
buf VARCHAR2(32767);
pos NUMBER;
tdt_xml CLOB;
validate_tdtxml VARCHAR2(1042);
category_id VARCHAR2(256);
BEGIN
-- remove the testing category if already existed
DBMS_MGD_ID_UTL.remove_category('MGD_SAMPLE_CATEGORY', '1.0');
-- Step 1. Create the testing category 'MGD_SAMPLE_CATEGORY', version 1.0.
category_id := DBMS_MGD_ID_UTL.CREATE_CATEGORY('MGD_SAMPLE_CATEGORY', '1.0', 'Oracle',
'http://www.example.com/mgd/sample');
-- Step 2. Add contractor scheme to the category.
DBMS_LOB.CREATETEMPORARY(tdt_xml, true);
DBMS_LOB.OPEN(tdt_xml, DBMS_LOB.LOB_READWRITE);
buf := '<?xml version="1.0" encoding="UTF-8"?>
<TagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode">
<scheme name="CONTRACTOR_TAG" optionKey="1" xmlns="">
<level type="URI" prefixMatch="example.contractor.">
<option optionKey="1" pattern="example.contractor.([0-9]*).([0-9]*)"
grammar="''example.contractor.'' contractorID ''.'' divisionID">
<field seq="1" characterSet="[0-9]*" name="contractorID"/>
<field seq="2" characterSet="[0-9]*" name="divisionID"/>
</option>
</level>
<level type="BINARY" prefixMatch="11">
<option optionKey="1" pattern="11([01]{7})([01]{6})"
grammar="''11'' contractorID divisionID ">
<field seq="1" characterSet="[01]*" name="contractorID"/>
<field seq="2" characterSet="[01]*" name="divisionID"/>
</option>
</level>
</scheme>
</TagDataTranslation>';
amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(tdt_xml, amt, pos, buf);
DBMS_LOB.CLOSE(tdt_xml);
DBMS_MGD_ID_UTL.ADD_SCHEME(category_id, tdt_xml);
-- Add the employee scheme to the category.
DBMS_LOB.CREATETEMPORARY(tdt_xml, true);
DBMS_LOB.OPEN(tdt_xml, DBMS_LOB.LOB_READWRITE);
buf := '<?xml version="1.0" encoding="UTF-8"?>
<TagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode">
<scheme name="EMPLOYEE_TAG" optionKey="1" xmlns="">
<level type="URI" prefixMatch="example.employee.">
<option optionKey="1" pattern="example.employee.([0-9]*).([0-9]*)"
grammar="''example.employee.'' employeeID ''.'' divisionID">
<field seq="1" characterSet="[0-9]*" name="employeeID"/>
<field seq="2" characterSet="[0-9]*" name="divisionID"/>
</option>
</level>
<level type="BINARY" prefixMatch="01">
<option optionKey="1" pattern="01([01]{7})([01]{6})"
grammar="''01'' employeeID divisionID ">
<field seq="1" characterSet="[01]*" name="employeeID"/>
<field seq="2" characterSet="[01]*" name="divisionID"/>
</option>
</level>
</scheme>
</TagDataTranslation>';
amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(tdt_xml, amt, pos, buf);
DBMS_LOB.CLOSE(tdt_xml);
DBMS_MGD_ID_UTL.ADD_SCHEME(category_id, tdt_xml);
-- Step 3. Validate the scheme.
dbms_output.put_line('Validate the MGD_SAMPLE_CATEGORY Scheme');
validate_tdtxml := DBMS_MGD_ID_UTL.validate_scheme(tdt_xml);
dbms_output.put_line(validate_tdtxml);
dbms_output.put_line('Length of scheme xml is: '||DBMS_LOB.GETLENGTH(tdt_xml));
-- Step 4. Test tag translation of contractor scheme.
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.contractor.123.45',
NULL, 'BINARY'));
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'111111011101101',
NULL, 'URI'));
-- Test tag translation of employee scheme.
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.employee.123.45',
NULL, 'BINARY'));
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'011111011101101',
NULL, 'URI'));
DBMS_MGD_ID_UTL.REMOVE_SCHEME(category_id, 'CONTRACTOR_TAG');
-- Step 6. Test tag translation of contractor scheme. Doesn't work any more.
BEGIN
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.contractor.123.45',
NULL, 'BINARY'));
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'111111011101101',
NULL, 'URI'));
EXCEPTION
WHEN others THEN
dbms_output.put_line('Contractor tag translation failed: '||SQLERRM);
END;
-- Step 7. Test tag translation of employee scheme. Still works.
BEGIN
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.employee.123.45',
NULL, 'BINARY'));
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'011111011101101',
NULL, 'URI'));
EXCEPTION
WHEN others THEN
dbms_output.put_line('Employee tag translation failed: '||SQLERRM);
END;
-- Step 8. Remove the testing category, which also removes all the associated schemes
DBMS_MGD_ID_UTL.remove_category('MGD_SAMPLE_CATEGORY', '1.0');
END;
/
SHOW ERRORS;
SQL> @add_scheme3.sql
.
.
.
Validate the MGD_SAMPLE_CATEGORY Scheme
EMPLOYEE_TAG;URI,BINARY;divisionID,employeeID
Length of scheme xml is: 933
111111011101101
example.contractor.123.45
011111011101101
example.employee.123.45
Contractor tag translation failed: ORA-55203: Tag data translation level not found
ORA-06512: at "MGDSYS.DBMS_MGD_ID_UTL", line 54
ORA-06512: at "MGDSYS.MGD_ID", line 242
ORA-29532: Java call terminated by uncaught Java
exception: oracle.mgd.idcode.exceptions.TDTLevelNotFound: Matching level not
found for any configured scheme
011111011101101
example.employee.123.45
.
.
.
このファンクションは、新規カテゴリまたは新バージョンのカテゴリを作成します。
構文
DBMS_MGD_ID_UTL.CREATE_CATEGORY ( category_name IN VARCHAR2, category_version IN VARCHAR2, agency IN VARCHAR2, URI IN VARCHAR2) RETURN VARCHAR2;
このファンクションは、EPCglobalタグ・データ変換(TDT)XMLをOracle Databaseタグ・データ変換XMLに変換します。
例
次の例では、標準EPCglobalタグ・データ変換(TDT)ファイルをOracle Database TDTファイルに変換します。
--Contents of MGD_ID_DOC2.sql
----------------------------
-- EPC_TO_ORACLE_SCHEME --
----------------------------
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.example.com', '80');
BEGIN
DBMS_JAVA.set_output(1000000);
DBMS_OUTPUT.ENABLE(1000000);
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_SEVERE);
END;
/
DECLARE
epcScheme CLOB;
oracleScheme CLOB;
amt NUMBER;
buf VARCHAR2(32767);
pos NUMBER;
seq BINARY_INTEGER;
validate_epcscheme VARCHAR2(256);
validate_oraclescheme VARCHAR2(256);
BEGIN
DBMS_LOB.CREATETEMPORARY(epcScheme, true);
DBMS_LOB.OPEN(epcScheme, DBMS_LOB.LOB_READWRITE);
buf := '<?xml version="1.0" encoding="UTF-8"?>
<epcTagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
epcTDSVersion="1.1r1.27"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="EpcTagDataTranslation.xsd">
<scheme name="GID-96" optionKey="1" tagLength="96">
<level type="BINARY" prefixMatch="00110101"
requiredFormattingParameters="taglength">
<option optionKey="1" pattern="00110101([01]{28})([01]{24})([01]{36})"
grammar="''00110101'' generalmanager objectclass serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[01]*" bitLength="28" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[01]*" bitLength="24" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[01]*" bitLength="36" name="serial"/>
</option>
</level>
<level type="TAG_ENCODING" prefixMatch="urn:epc:tag:gid-96"
requiredFormattingParameters="taglength">
<option optionKey="1"
pattern="urn:epc:tag:gid-96:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="''urn:epc:tag:gid-96:'' generalmanager ''.'' objectclass ''.'' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
<level type="PURE_IDENTITY" prefixMatch="urn:epc:id:gid">
<option optionKey="1"
pattern="urn:epc:id:gid:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="''urn:epc:id:gid:'' generalmanager ''.'' objectclass ''.'' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
<level type="LEGACY" prefixMatch="generalmanager=">
<option optionKey="1"
pattern="generalmanager=([0-9]*);objectclass=([0-9]*);serial=([0-9]*)"
grammar="''generalmanager=''generalmanager'';objectclass=''objectclass '';serial='' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
</scheme>
</epcTagDataTranslation>';
amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(epcScheme, amt, pos, buf);
DBMS_LOB.CLOSE(epcScheme);
oracleScheme := DBMS_MGD_ID_UTL.epc_to_oracle_scheme(epcScheme);
dbms_output.put_line('Length of oracle scheme xml is: '||DBMS_LOB.GETLENGTH(oracleScheme));
dbms_output.put_line(DBMS_LOB.SUBSTR(oracleScheme, DBMS_LOB.GETLENGTH(oracleScheme), 1));
dbms_output.put_line(' ');
dbms_output.put_line('Validate the Oracle Scheme');
validate_oraclescheme := DBMS_MGD_ID_UTL.validate_scheme(oracleScheme);
dbms_output.put_line('Validation result: '||validate_oraclescheme);
END;
/
SHOW ERRORS;
SQL> @mgd_id_doc2.sql
PL/SQL procedure successfully completed.
Length of oracle scheme xml is: 2475
<?xml version = '1.0' encoding = 'UTF-8'?>
<TagDataTranslation version="0.04"
date="2005-04-18T16:05:00Z" xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode"><scheme name="GID-96" optionKey="1" xmlns=""><level
type="BINARY" prefixMatch="00110101" requiredFormattingParameters=""><option
optionKey="1" pattern="00110101([01]{28})([01]{24})([01]{36})"
grammar="'00110101' generalmanager objectclass serial"><field seq="1"
decimalMinimum="0" decimalMaximum="268435455" characterSet="[01]*"
bitLength="28" name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[01]*" bitLength="24"
name="objectclass"/><field seq="3" decimalMinimum="0"
decimalMaximum="68719476735" characterSet="[01]*" bitLength="36"
name="serial"/></option></level><level type="TAG_ENCODING"
prefixMatch="urn:epc:tag:gid-96" requiredFormattingParameters=""><option
optionKey="1" pattern="urn:epc:tag:gid-96:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="'urn:epc:tag:gid-96:' generalmanager '.' objectclass '.' serial"><field
seq="1" decimalMinimum="0" decimalMaximum="268435455" characterSet="[0-9]*"
name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[0-9]*" name="objectclass"/><field
seq="3" decimalMinimum="0" decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level><level type="PURE_IDENTITY"
prefixMatch="urn:epc:id:gid"><option optionKey="1"
pattern="urn:epc:id:gid:([0-9]*)\.([0-9]*)\.([0-9]*)" grammar="'urn:epc:id:gid:'
generalmanager '.' objectclass '.' serial"><field seq="1" decimalMinimum="0"
decimalMaximum="268435455" characterSet="[0-9]*" name="generalmanager"/><field
seq="2" decimalMinimum="0" decimalMaximum="16777215" characterSet="[0-9]*"
name="objectclass"/><field seq="3" decimalMinimum="0"
decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level><level type="LEGACY"
prefixMatch="generalmanager="><option optionKey="1"
pattern="generalmanager=([0-9]*);objectclass=([0-9]*);serial=([0-9]*)"
grammar="'generalmanager='generalmanager';objectclass='objectclass ';serial='
serial"><field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[0-9]*" name="objectclass"/><field
seq="3" decimalMinimum="0" decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level></scheme></TagDataTranslation>
Validate the Oracle Scheme
Validation result:
GID-96;LEGACY,TAG_ENCODING,PURE_IDENTITY,BINARY;objectclass,generalmanager,serial,
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、指定されたカテゴリ名およびカテゴリ・バージョンのカテゴリIDを戻します。
構文
DBMS_MGD_ID_UTL.GET_CATEGORY_ID ( category name IN VARCHAR2, category_version IN VARCHAR2) RETURN VARCHAR2;
例
次の例では、指定されたカテゴリ名およびバージョンのカテゴリIDを戻します。
-- Contents of get_category1.sql file
SELECT DBMS_MGD_ID_UTL.get_category_id('EPC', NULL) FROM DUAL;
SQL> @get_category1.sql
.
.
.
DBMS_MGD_ID_UTL.GET_CATEGORY_ID('EPC',NULL)--------------------------------------------------------------------------------1
.
.
.
このファンクションは、指定したスキームに対応する、セミコロン(;)区切りのすべての関連コンポーネント名を戻します。
構文
DBMS_MGD_ID_UTL.GET_COMPONENTS ( category_id IN VARCHAR2, scheme_name IN VARCHAR2) RETURN VARCHAR2;
例
次に、コンポーネントを取得する例を示します。
--Contents of get_components.sql
DECLARE
id mgd_id;
getcomps VARCHAR2(1000);
getencodings VARCHAR2(1000);
getschemenames VARCHAR2(1000);
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
getcomps := DBMS_MGD_ID_UTL.get_components(1,'SGTIN-64');
dbms_output.put_line('Component names are: ' || getcomps);
getencodings := DBMS_MGD_ID_UTL.get_encodings(1,'SGTIN-64');
dbms_output.put_line('Encodings are: ' || getencodings);
getschemenames := DBMS_MGD_ID_UTL.get_scheme_names(1);
dbms_output.put_line('Scheme names are: ' || getschemenames);
END;
/
SHOW ERRORS;
SQL> @get_components.sql
.
.
.
Component names are:
filter,gtin,companyprefixlength,companyprefix,companyprefixindex,itemref,serial
Encodings are: ONS_HOSTNAME,LEGACY,TAG_ENCODING,PURE_IDENTITY,BINARY
Scheme names are:
GIAI-64,GIAI-96,GID-96,GRAI-64,GRAI-96,SGLN-64,SGLN-96,SGTIN-64,SGTIN-96,SSCC-64
,SSCC-96,USDOD-64,USDOD-96
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、指定したスキームに対応するセミコロン(;)区切りのエンコード(フォーマット)のリストを戻します。
このファンクションは、現在のトレース・ロギング・レベルを表す整数を戻します。
例
次の例では、Javaロギング・レベルを取得します。
--Contents of getjavalogginglevel.sql
DECLARE
loglevel NUMBER;
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
loglevel := DBMS_MGD_ID_UTL.get_java_logging_level();
dbms_output.put_line('Java logging level = ' ||loglevel);
END;
/
SHOW ERRORS;
SQL> @getjavalogginglevel.sql
.
.
.
Java logging level = 0
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、現在のPL/SQLトレース・ロギング・レベルを表す整数を戻します。
構文
DBMS_MGD_ID_UTL.GET_PLSQL_LOGGING_LEVEL RETURN INTEGER; PRAGMA restrict_references(get_plsql_logging_level, WNDS);
例
次の例では、PL/SQLロギング・レベルを取得します。
--Contents of getplsqllogginglevel.sql
DECLARE
loglevel NUMBER;
BEGIN
DBMS_MGD_ID_UTL.set_plsql_logging_level(0);
loglevel := DBMS_MGD_ID_UTL.get_plsql_logging_level();
dbms_output.put_line('PL/SQL logging level = ' ||loglevel);
END;
/
SHOW ERRORS;
SQL> @getplsqllogginglevel.sql
.
.
.
PL/SQL logging level = 0
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、指定したスキームに対応するOracle Databaseタグ・データ変換XMLを戻します。
例
次の例では、指定したスキームに対応するOracle Database TDT XMLを取得します。
--Contents of get_tdtxml.sql
DECLARE
gettdtxml CLOB;
BEGIN
gettdtxml := DBMS_MGD_ID_UTL.get_tdt_xml(1,'SGTIN-64');
dbms_output.put_line('Length of tdt XML is '||DBMS_LOB.GETLENGTH(gettdtxml));
dbms_output.put_line(DBMS_LOB.SUBSTR(gettdtxml, DBMS_LOB.GETLENGTH(gettdtxml), 1));
END;
/
SHOW ERRORS;
SQL> @get_tdtxml.sql
.
.
.
Length of tdt XML is 22884
<?xml version = '1.0' encoding = "UTF-8"?>
<TagDataTranslation version="0.04"
date="2005-04-18T16:05:00Z" xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode"><scheme name="SGTIN-64"
optionKey="companyprefixlength" xmlns="">
<level type="BINARY"
prefixMatch="10" requiredFormattingParameters="filter">
<option
optionKey="12" pattern="10([01]{3})([01]{14})([01]{20})([01]{25})" grammar="'10'
filter companyprefixindex itemref serial">
<field seq="1"
decimalMinimum="0" decimalMaximum="7" characterSet="[01]*" bitLength="3"
length="1" padChar="0" padDir="LEFT" name="filter"/>
<field seq="2"
decimalMinimum="0" decimalMaximum="16383" characterSet="[01]*" bitLength="14"
name="companyprefixindex"/>
<field seq="3" decimalMinimum="0"
decimalMaximum="9" characterSet="[01]*" bitLength="20" length="1" padChar="0"
padDir="LEFT" name="itemref"/>
<field seq="4" decimalMinimum="0"
decimalMaximum="33554431" characterSet="[01]*" bitLength="25" name="serial"/>
.
.
.
<field seq="1" decimalMinimum="0" decimalMaximum="9999999" characterSet="[0-9]*"
length="7" padChar="0" padDir="LEFT" name="itemref"/>
<field seq="2" decimalMinimum="0" decimalMaximum="999999" characterSet="[0-9]*" length="6"
padChar="0" padDir="LEFT" name="companyprefix"/>
</option>
</level>
</scheme></TagDataTranslation>
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、Oracle Databaseタグ・データ変換スキーマを戻します。
例
この例では、Oracle Database TDTスキーマを戻します。
--Contents of get_validator.sql
DECLARE
getvalidator CLOB;
BEGIN
getvalidator := DBMS_MGD_ID_UTL.get_validator;
dbms_output.put_line('Length of validated oracle scheme xml is '||DBMS_LOB.GETLENGTH(getvalidator));
dbms_output.put_line(DBMS_LOB.SUBSTR(getvalidator, DBMS_LOB.GETLENGTH(getvalidator), 1));
END;
/
SHOW ERRORS;
SQL> @get_validator.sql
.
.
.
Length of validated oracle scheme xml is 5780
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="oracle.mgd.idcode"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tdt="oracle.mgd.idcode" elementFormDefault="unqualified"
attributeFormDefault="unqualified" version="1.0">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
<epcglobal:copyright>Copyright ?2004
Epcglobal Inc., All
Rights
Reserved.</epcglobal:copyright>
<epcglobal:disclaimer>EPCglobal Inc., its
members, officers, directors,
employees, or agents shall not be liable for any
injury, loss, damages,
financial or otherwise, arising from, related to, or
caused by the use of this
document. The use of said document shall constitute
your express consent to
the foregoing
exculpation.</epcglobal:disclaimer>
<epcglobal:specification>Tag Data
Translation (TDT) version
1.0</epcglobal:specification>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType
name="LevelTypeList">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TagLengthList"
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SchemeNameList">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType
name="InputFormatList">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BINARY"/>
<xsd:enumeration value="STRING"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ModeList">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="EXTRACT"/>
<xsd:enumeration value="FORMAT"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="CompactionMethodList">
<xsd:restriction
base="xsd:string">
<xsd:enumeration value="32-bit"/>
<xsd:enumeration value="16-bit"/>
<xsd:enumeration value="8-bit"/>
<xsd:enumeration value="7-bit"/> <xsd:enumeration value="6-bit"/>
<xsd:enumeration value="5-bit"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PadDirectionList">
<xsd:restriction
base="xsd:string">
<xsd:enumeration value="LEFT"/>
<xsd:enumeration
value="RIGHT"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType
name="Field">
<xsd:attribute name="seq" type="xsd:integer" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute
name="bitLength" type="xsd:integer"/>
<xsd:attribute name="characterSet"
type="xsd:string" use="required"/>
<xsd:attribute name="compaction"
type="tdt:CompactionMethodList"/>
<xsd:attribute name="compression"
type="xsd:string"/>
<xsd:attribute name="padChar" type="xsd:string"/>
<xsd:attribute name="padDir" type="tdt:PadDirectionList"/>
<xsd:attribute
name="decimalMinimum" type="xsd:long"/>
<xsd:attribute name="decimalMaximum"
type="xsd:long"/>
<xsd:attribute name="length" type="xsd:integer"/>
</xsd:complexType>
<xsd:complexType name="Option">
<xsd:sequence>
<xsd:element name="field" type="tdt:Field" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="optionKey" type="xsd:string"
use="required"/>
<xsd:attribute name="pattern" type="xsd:string"/>
<xsd:attribute name="grammar" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="Rule">
<xsd:attribute
name="type" type="tdt:ModeList" use="required"/>
<xsd:attribute
name="inputFormat" type="tdt:InputFormatList"
use="required"/>
<xsd:attribute name="seq" type="xsd:integer"
use="required"/>
<xsd:attribute name="newFieldName" type="xsd:string"
use="required"/>
<xsd:attribute name="characterSet" type="xsd:string"
use="required"/>
<xsd:attribute name="padChar" type="xsd:string"/>
<xsd:attribute name="padDir" type="tdt:PadDirectionList"/>
<xsd:attribute
name="decimalMinimum" type="xsd:long"/>
<xsd:attribute name="decimalMaximum"
type="xsd:long"/>
<xsd:attribute name="length" type="xsd:string"/>
<xsd:attribute name="function" type="xsd:string" use="required"/>
<xsd:attribute name="tableURI" type="xsd:string"/>
<xsd:attribute
name="tableParams" type="xsd:string"/>
<xsd:attribute name="tableXPath"
type="xsd:string"/>
<xsd:attribute name="tableSQL" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="Level">
<xsd:sequence>
<xsd:element name="option" type="tdt:Option" minOccurs="1"
maxOccurs="unbounded"/>
<xsd:element name="rule" type="tdt:Rule"
minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="type" type="tdt:LevelTypeList" use="required"/>
<xsd:attribute name="prefixMatch" type="xsd:string" use="optional"/>
<xsd:attribute name="requiredParsingParameters" type="xsd:string"/>
<xsd:attribute name="requiredFormattingParameters" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="Scheme">
<xsd:sequence>
<xsd:element name="level" type="tdt:Level" minOccurs="1" maxOccurs="5"/>
</xsd:sequence>
<xsd:attribute name="name" type="tdt:SchemeNameList"
use="required"/>
<xsd:attribute name="optionKey" type="xsd:string"
use="required"/>
<xsd:attribute name="tagLength" type="tdt:TagLengthList"
use="optional"/>
</xsd:complexType>
<xsd:complexType
name="TagDataTranslation">
<xsd:sequence>
<xsd:element name="scheme"
type="tdt:Scheme" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute
name="version" type="xsd:string" use="required"/>
<xsd:attribute name="date"
type="xsd:dateTime" use="required"/>
</xsd:complexType>
<xsd:element
name="TagDataTranslation" type="tdt:TagDataTranslation"/>
</xsd:schema>
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、指定したカテゴリに対応するJavaスタックのメタデータ情報をリフレッシュします。このファンクションは、MGD_IDファンクションを使用する前にコールする必要があります。
例
次の例では、EPCカテゴリIDのメタデータ情報をリフレッシュします。
--Contents of tostring3.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.example.com', '80');
DECLARE
id MGD_ID;
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
dbms_output.put_line('..Testing to_string');
DBMS_OUTPUT.PUT_LINE('test to_string');
id := mgd_id('EPC', NULL, 'urn:epc:id:gid:0037000.30241.1041970', 'scheme=GID-96');
DBMS_OUTPUT.PUT_LINE('mgd_id object as a string');
DBMS_OUTPUT.PUT_LINE(id.to_string);
END;
/
SHOW ERRORS;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @tostring3.sql
..Testing to_string
test to_string
mgd_id object as a string
category_id =1;schemes = GID-96;objectclass = 30241;generalmanager =
0037000;scheme = GID-96;1 = 1;serial = 1041970
PL/SQL procedure successfully completed.
このプロシージャは、関連するすべてのTDT XMLを含むカテゴリを削除します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
指定したカテゴリIDに基づいてカテゴリを削除します。
DBMS_MGD_ID_UTL.REMOVE_CATEGORY ( category_id IN VARCHAR2);
指定したカテゴリ名およびカテゴリ・バージョンに基づいてカテゴリを削除します。
DBMS_MGD_ID_UTL.REMOVE_CATEGORY ( category_name IN VARCHAR2, category_version IN VARCHAR2);
このプロシージャは、Javaトレース・ロギング・レベルを設定します。
パラメータ
表96-15 SET_JAVA_LOGGING_LEVELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ロギング・レベル。Javaロギング・レベルは、次の値(降順)のいずれかです。
|
このプロシージャは、PL/SQLトレース・ロギング・レベルを設定します。
構文
DBMS_MGD_ID_UTL.SET_PLSQL_LOGGING_LEVEL ( level IN INTEGER); PRAGMA restrict_references(set_plsql_logging_level, WNDS);
パラメータ
表96-16 SET_PLSQL_LOGGING_LEVELプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ロギング・レベル。PL/SQLロギング・レベルは、次の値(降順)のいずれかです。
|
このプロシージャは、インターネット・アクセス用のプロキシ・サーバーのホストおよびポートを設定します。データベース・サーバーがプロキシ・サーバーを使用してインターネットにアクセスする場合は、このプロシージャをコールする必要があります。一部のルールでは、企業の同一キー索引を取得する場合にObject Naming Service(ONS)表を検索する必要があるため、インターネット・アクセスが必要です。
インターネット・アクセスが必要なルールを含まないスキームのみを使用している場合は、このプロシージャをコールする必要はありません。