MGD_IDパッケージは、サポートされるエンコーディング・タイプとして、EPCビット・エンコーディングの標準ファミリを使用した現在の無線自動識別(RFID)タグをサポートする拡張可能なフレームワークを提供します。また、MGD_IDパッケージは、現在のEPC標準(EPC v1.1仕様)に含まれていない新規および進化中のタグ・エンコーディングもサポートします。MGD_IDパッケージには、事前定義された複数のタイプが含まれています。
|
関連項目: 詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
このリファレンスの章で説明するメソッドでは、コンストラクタ・ファンクションに示される例に基づいて例を示します。
この章の例では、次のコマンド・セットを実行してから各スクリプトを実行することを想定しています。
SQL> connect / as sysdba;
Connected.
SQL> create user mgduser identified by mgduser;
SQL> grant connect, resource to mgduser;
SQL> connect mgduser
Enter password: mgduserpassword
Connected.
SQL> set serveroutput on;
この項では、MGD_IDパッケージのオブジェクト・タイプの使用に関連する項目について説明します。
catmgd.sqlスクリプトを実行してDBMS_MGD_ID_UTLパッケージをロードし、必要な識別コード・パッケージのスキーマ・オブジェクトをMGDSYSスキーマに作成します。
MGD_IDは、MGDSYS所有のオブジェクト・タイプです。無名PL/SQLブロックからコールされたすべてのMGD_IDサブプログラムは、現行のユーザーの権限を使用して実行されます。
MGD_IDオブジェクト・タイプとそのサブプログラムを使用するには、ユーザーに接続ロールとリソース・ロールが付与されている必要があります。
PUBLICには、このADT(MGD_ID)に対するEXECUTE権限が付与されます。
このADT(MGD_ID)に対して同じ名前のパブリック・シノニムが作成されます。
表256-1は、MGD_IDパッケージのオブジェクト・タイプについて説明しています。
表256-1 MGD_IDパッケージのオブジェクト・タイプ
| オブジェクト・タイプ名 | 説明 |
|---|---|
|
|
コンポーネントを定義する名前/値ペアの属性を指定するデータ・タイプ。 |
|
MGD_ID_COMPONENT_VARRAYオブジェクト・タイプ |
識別コード・タイプのオブジェクトを作成するための2つのコンストラクタ・ファンクションで使用される名前/値の属性のペアとして、最大128のコンポーネントのリストを指定するデータ・タイプ。 |
|
|
この識別コードのコード・カテゴリのカテゴリ識別子とそのコンポーネント・リストを指定する |
MGD_ID_COMPONENT_VARRAYタイプは、コンポーネント・リストを使用して製品コード・タイプのオブジェクトを作成する場合に、2つのコンストラクタ・ファンクションで使用される名前/値の属性のペアとして、コンポーネント・リスト(最大128)を指定するためのデータ・タイプです。
MGD_IDタイプは、RFIDアプリケーション内での識別コードを表します。このタイプは、標準のEPCビット・エンコーディングを使用するRFIDタグ、およびEPC標準に含まれないタグ・エンコーディングを使用するRFIDタグを表します。
構文
CREATE OR REPLACE TYPE MGD_ID as object (category_id VARCHAR2(256),
components MGD_ID_COMPONENT_VARRAY);
表256-5は、MGD_IDオブジェクト・タイプのサブプログラムについて説明しています。
特に明記されていないかぎり、MGD_IDオブジェクト・タイプに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別が必要な場合は、値を二重引用符で囲んでください。
表256-5 MGD_IDオブジェクト・タイプのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
渡されたパラメータに基づいて |
|
|
指定した形式で |
|
|
指定した |
|
|
|
|
|
指定した別の形式に識別子を変換した結果を戻します。 |
このコンストラクタ・ファンクションは識別コード・タイプ・オブジェクトMGD_IDを構成します。このコンストラクタ・ファンクションはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
MGD_IDオブジェクト・タイプをカテゴリIDおよびコンポーネントのリストに基づいて構成します。
constructor function MGD_ID (
category_id IN VARCHAR2,
components IN MGD_ID_COMPONENT_VARRAY)
RETURN SELF AS RESULT DETERMINISTIC;
MGD_IDオブジェクト・タイプをカテゴリID、識別子文字列および作成に必要な追加パラメータのリストに基づいて構成します。
constructor function MGD_ID (
category_id VARCHAR2,
identifier VARCHAR2,
parameter_list VARCHAR2)
RETURN SELF AS RESULT DETERMINISTIC;
MGD_IDオブジェクト・タイプをカテゴリ名、カテゴリ・バージョンおよびコンポーネントのリストに基づいて構成します。
constructor function MGD_ID (
category_name VARCHAR2,
category_version VARCHAR2,
components MGD_ID_COMPONENT_VARRAY)
RETURN SELF AS RESULT DETERMINISTIC;
MGD_IDオブジェクト・タイプをカテゴリ名、カテゴリ・バージョン、識別子文字列および作成に必要な追加パラメータのリストに基づいて構成します。
constructor function MGD_ID (
category_name VARCHAR2,
category_version VARCHAR2,
identifier VARCHAR2,
parameter_list VARCHAR2)
RETURN SELF AS RESULT DETERMINISTIC;
パラメータ
表256-6 MGD_IDコンストラクタ・ファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
カテゴリ識別子。 |
|
|
コンポーネントの名前/値ペアのリスト。 |
|
|
カテゴリ名( |
|
|
カテゴリ・バージョン。 |
|
|
指定したカテゴリ内のコード体系の識別子文字列(形式は任意)。たとえば、SGTIN-96エンコーディングの場合、識別子の形式は タグ・データ変換(TDT)マークアップ・ファイルの適切な文法またはパターンに従って、この識別子を文字列として表します。たとえば、文字 |
|
|
表現内にオブジェクトを作成するために必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのデリミタとしてセミコロン(;)で区切られています。たとえば、GTINコードの場合、パラメータ文字列は次のようになります。 filter=3;companyprefixlength=7;taglength=96 |
使用上の注意
MGD_ID_UTL.EPC_ENCODING_CATEGORY_IDはcategory_idとして使用します。
カテゴリが未登録の場合、エラーが発生します。
bit_lengthパラメータがNULLの場合、bit_lengthはbit_encodingの長さの8倍になります。
コンポーネント・リストに必要なすべてのコンポーネントが含まれない場合、例外MGD_ID_UTL.e_LackComponentがスローされます。
MGD_IDオブジェクト(SGTIN-64)をカテゴリIDおよびコンポーネントのリストを渡して構成します。
--Contents of constructor11.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
call DBMS_MGD_ID_UTL.refresh_category('1');
select MGD_ID('1',
MGD_ID_COMPONENT_VARRAY(
MGD_ID_COMPONENT('companyprefix','0037000'),
MGD_ID_COMPONENT('itemref','030241'),
MGD_ID_COMPONENT('serial','1041970'),
MGD_ID_COMPONENT('schemes','SGTIN-64')
)
) from dual;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @constructor11.sql
.
.
.
MGD_ID('1', MGD_ID_COMPONENT_VARRAY(MGD_ID_COMPONENT('companyprefix', '0037000'),
MGD_ID_COMPONENT('itemref', '030241'),
MGD_ID_COMPONENT('serial', '1041970'),
MGD_ID_COMPONENT('schemes', 'SGTIN-64')))
.
.
.
MGD_IDオブジェクト(SGTIN-64)をカテゴリID、タグ識別子およびオブジェクトの作成に必要な追加パラメータのリストを渡して構成します。
--Contents of constructor22.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
call DBMS_MGD_ID_UTL.refresh_category('1');
select MGD_ID('1',
'urn:epc:id:sgtin:0037000.030241.1041970',
'filter=3;scheme=SGTIN-64') from dual;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @constructor22.sql
.
.
.
MGD_ID('1', MGD_ID_COMPONENT_VARRAY(MGD_ID_COMPONENT('filter', '3'),
MGD_ID_COMPONENT('schemes', 'SGTIN-64'),
MGD_ID_COMPONENT('companyprefixlength', '7'),
MGD_ID_COMPONENT('companyprefix', '0037000'),
MGD_ID_COMPONENT('scheme', 'SGTIN-64'),
MGD_ID_COMPONENT('serial', '1041970'),
MGD_ID_COMPONENT('itemref', '030241')))
.
.
.
MGD_IDオブジェクト(SGTIN-64)をカテゴリ名、カテゴリ・バージョン(NULLの場合は最新バージョンが使用される)およびコンポーネントのリストを渡して構成します。
--Contents of constructor33.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
call DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
select MGD_ID('EPC', NULL,
MGD_ID_COMPONENT_VARRAY(
MGD_ID_COMPONENT('companyprefix','0037000'),
MGD_ID_COMPONENT('itemref','030241'),
MGD_ID_COMPONENT('serial','1041970'),
MGD_ID_COMPONENT('schemes','SGTIN-64')
)
) from dual;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @constructor33.sql
.
.
.
MGD_ID('1', MGD_ID_COMPONENT_VARRAY(MGD_ID_COMPONENT('companyprefix', '0037000'),
MGD_ID_COMPONENT('itemref', '030241'),
MGD_ID_COMPONENT('serial', '1041970'),
MGD_ID_COMPONENT('schemes', 'SGTIN-64')))
.
.
.
MGD_IDオブジェクト(SGTIN-64)をカテゴリ名とカテゴリ・バージョン、タグ識別子およびオブジェクトの作成に必要な追加パラメータのリストを渡して構成します。
--Contents of constructor44.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
call DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
select MGD_ID('EPC', NULL,
'urn:epc:id:sgtin:0037000.030241.1041970',
'filter=3;scheme=SGTIN-64') from dual;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @constructor4.sql
.
.
.
MGD_ID('1', MGD_ID_COMPONENT_VARRAY(MGD_ID_COMPONENT('filter', '3'),
MGD_ID_COMPONENT('schemes', 'SGTIN-64'),
MGD_ID_COMPONENT('companyprefixlength', '7'),
MGD_ID_COMPONENT('companyprefix', '0037000'),
MGD_ID_COMPONENT('scheme', 'SGTIN-64'),
MGD_ID_COMPONENT('serial', '1041970'),
MGD_ID_COMPONENT('itemref', '030241')))
.
.
.
このファンクションは、指定した形式でMGD_IDオブジェクトの文字列表現を戻します。
構文
function FORMAT (parameter_list IN VARCHAR2,
output_format IN VARCHAR2)
RETURN VARCHAR2 DETERMINISTIC;
パラメータ
表256-7 FORMATファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
表現内にオブジェクトを作成するために必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのデリミタとしてセミコロン(;)で区切られています。たとえば、GTINコードの場合、パラメータ文字列は次のようになります。 filter=3;companyprefixlength=7;taglength=96 |
|
|
|
このファンクションは、指定したMGD_IDコンポーネントの値を戻します。
例
次の例は、このGID-96識別コンポーネントのゼネラル・マネージャ、オブジェクト・クラス・コンポーネントおよびシリアル番号コンポーネントを戻します。
--Contents of get_components.sql file
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.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));
---------------
--PURE_IDENTIT
---------------
dbms_output.put_line('..Testing constructor with pure identity');
----------------------------------------------------------------------
-- PURE_IDENTITY representation can be translated to BINARY and
-- TAG_ENCODING ONLY when BOTH scheme and filer are provided.
----------------------------------------------------------------------
id := MGD_ID('EPC', NULL, 'urn:epc:id:sgtin:0037000.030241.1041970', 'scheme=SGTIN-64;filter=3');
dbms_output.put_line(id.to_string);
dbms_output.put_line('filter = ' || id.get_component('filter'));
dbms_output.put_line('company prefix = ' || id.get_component('companyprefix'));
dbms_output.put_line('itemref = ' || id.get_component('itemref'));
dbms_output.put_line('serial = ' || id.get_component('serial'));
dbms_output.put_line('BINARY format = ' || id.format(NULL, 'BINARY'));
dbms_output.put_line('PURE_IDENTITY format = ' || id.format(NULL, 'PURE_IDENTITY'));
dbms_output.put_line('TAG_ENCODING format = ' || id.format(NULL, 'TAG_ENCODING'));
END;
/
SHOW ERRORS;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @get_component.sql
.
.
.
..Testing constructor with pure identity
category_id =1;filter = 3;schemes = SGTIN-64;companyprefixlength =
7;companyprefix = 0037000;scheme = SGTIN-64;serial = 1041970;itemref = 030241
filter = 3
company prefix = 0037000
itemref = 030241
serial = 1041970
BINARY format =1001100000000000001000001110110001000010000011111110011000110010
PURE_IDENTITY format = urn:epc:id:sgtin:0037000.030241.1041970
TAG_ENCODING format = urn:epc:tag:sgtin-64:3.0037000.030241.1041970
PL/SQL procedure successfully completed.
.
.
.
このファンクションは、MGD_IDオブジェクトのセミコロン(;)で区切られたコンポーネントの名前/値ペアを戻します。
例
次の例は、MGD_IDオブジェクトを文字列値に変換しています。
-- Contents of tostring3.sql file
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
DECLARE
id MGD_ID;
BEGIN
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
dbms_output.put_line('..Testing 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();
connect / as sysdba;
drop user mgduser cascade;
SQL> @tostring3.sql
.
.
.
..Testing 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.
.
.
この静的ファンクションはMGD_IDオブジェクトを構成せずに、直接異なる表現間の変換を行います。このメソッドはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
ある形式の識別子を別の指定されたカテゴリ名、タグ識別子、パラメータ・リストおよび出力形式に変換します。
function TRANSLATE (
category_name IN VARCHAR2,
identifier IN VARCHAR2,
parameter_list IN VARCHAR2,
output_format IN VARCHAR2)
RETURN VARCHAR2 DETERMINISTIC;
ある形式の識別子を別の指定されたカテゴリ名、カテゴリ・バージョン、タグ識別子、パラメータ・リストおよび出力形式に変換します。
function TRANSLATE (
category_name IN VARCHAR2,
category_version IN VARCHAR2,
identifier IN VARCHAR2,
parameter_list IN VARCHAR2,
output_format IN VARCHAR2)
RETURN VARCHAR2 DETERMINISTIC;
パラメータ
表256-9 TRANSLATEファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
カテゴリの名前。 |
|
|
カテゴリ・バージョン。 |
|
|
TDTマークアップ・ファイルの文法またはパターンの1つに従った文字列として表されるEPC識別子。たとえば、文字 |
|
|
表現内にオブジェクトを作成するために必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのデリミタとしてセミコロン(;)で区切られています。たとえば、GTINコードの場合、パラメータ文字列は次のようになります。 filter=3;companyprefixlength=7;taglength=96 |
|
|
|
例
次の例は、あるGID-96表現を別の表現に変換しています。
-- Contents of translate1.sql file
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.us.oracle.com', '80');
DECLARE
id MGD_ID;
BEGIN
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
dbms_output.put_line('Category ID is EPC, Identifier is BINARY, Output format is BINARY');
dbms_output.put_line(
mgd_id.translate('EPC',
NULL,'001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010'
, NULL, 'BINARY'));
dbms_output.put_line('Category ID is EPC, Identifier is BINARY, Output format is PURE_IDENTITY');
dbms_output.put_line(
mgd_id.translate('EPC',
NULL,'001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010'
, NULL, 'PURE_IDENTITY'));
dbms_output.put_line('Category ID is EPC, Identifier is BINARY, Output format is TAG_ENCODING');
dbms_output.put_line(
mgd_id.translate('EPC',
NULL,'001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010'
, NULL, 'TAG_ENCODING'));
dbms_output.put_line('Category ID is EPC, Identifier is TAG_ENCODING, Output format is BINARY');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:tag:gid-96:0037000.30241.1041970',
NULL, 'BINARY'));
dbms_output.put_line('Category ID is EPC, Identifier is TAG_ENCODING, Output format is
PURE_IDENTITY');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:tag:gid-96:0037000.30241.1041970',
NULL, 'PURE_IDENTITY'));
dbms_output.put_line('Category ID is EPC, Identifier is TAG_ENCODING, Output format is TAG_ENCODING');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:tag:gid-96:0037000.30241.1041970',
NULL, 'TAG_ENCODING'));
dbms_output.put_line('Category ID is EPC, Identifier is PURE_IDENTITY, Output format is BINARY');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:id:gid:0037000.30241.1041970',
NULL, 'BINARY'));
dbms_output.put_line('Category ID is EPC, Identifier is PURE_IDENTITY, Output format is PURE_IDENTITY');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:id:gid:0037000.30241.1041970',
NULL, 'PURE_IDENTITY'));
dbms_output.put_line('Category ID is EPC, Identifier is PURE_IDENTITY, Output format is TAG_ENCODING');
dbms_output.put_line(
mgd_id.translate('EPC', NULL,
'urn:epc:id:gid:0037000.30241.1041970',
NULL, 'TAG_ENCODING'));
END;
/
SHOW ERRORS;
call DBMS_MGD_ID_UTL.remove_proxy();
SQL> @translate1.sql
.
.
.
Category ID is EPC, Identifier is BINARY, Output format is BINARY
001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010
Category ID is EPC, Identifier is BINARY, Output format is PURE_IDENTITY
urn:epc:id:gid:37000.30241.1041970
Category ID is EPC, Identifier is BINARY, Output format is TAG_ENCODING
urn:epc:tag:gid-96:37000.30241.1041970
Category ID is EPC, Identifier is TAG_ENCODING, Output format is BINARY
001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010
Category ID is EPC, Identifier is TAG_ENCODING, Output format is PURE_IDENTITY
urn:epc:id:gid:0037000.30241.1041970
Category ID is EPC, Identifier is TAG_ENCODING, Output format is TAG_ENCODING
urn:epc:tag:gid-96:0037000.30241.1041970
Category ID is EPC, Identifier is PURE_IDENTITY, Output format is BINARY
001101010000000000001001000010001000000000000111011000100001000000000000000011111110011000110010
Category ID is EPC, Identifier is PURE_IDENTITY, Output format is PURE_IDENTITY
urn:epc:id:gid:0037000.30241.1041970
Category ID is EPC, Identifier is PURE_IDENTITY, Output format is TAG_ENCODING
urn:epc:tag:gid-96:0037000.30241.1041970
PL/SQL procedure successfully completed.
.
.
.