MGD_IDパッケージは、サポートされるエンコーディング・タイプとして、EPCビット・エンコーディングの標準ファミリを使用した現在のRFIDタグをサポートする拡張可能なフレームワークを提供します。 また、MGD_IDパッケージは、現在のEPC標準(EPCv1.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;
表235-1に、MGD_IDパッケージのオブジェクト・タイプを示します。
表235-1 MGD_IDパッケージのオブジェクト・タイプ
オブジェクト・タイプ名 | 説明 |
---|---|
|
コンポーネントを定義する名前/値ペアの属性を指定するデータ型。 |
MGD_ID_COMPONENT_VARRAYオブジェクト・タイプ |
識別コード・タイプのオブジェクトを作成するための2つのコンストラクタ・ファンクションで使用される名前/値の属性のペアとして、最大128のコンポーネントのリストを指定するデータ型。 |
|
この識別コードのコード・カテゴリのカテゴリ識別子とそのコンポーネント・リストを指定するMGD_IDオブジェクトを表します。 |
MGD_ID_COMPONENT
タイプは、コンポーネントを定義する名前/値ペアの属性を指定する場合に使用されるデータ型です。
構文
CREATE OR REPLACE TYPE MGD_ID_COMPONENT as object (name VARCHAR2(256), value VARCHAR2(1024));
属性
使用上の注意
なし
例
例については、「MGD_IDコンストラクタ・ファンクション」を参照してください。
MGD_ID_COMPONENT_VARRAY
タイプは、コンポーネント・リストを使用して製品コード・タイプのオブジェクトを作成する場合に、2つのコンストラクタ・ファンクションで使用される名前/値の属性のペアとして、最大128のコンポーネントのリストを指定するために使用されるデータ型です。
構文
CREATE OR REPLACE TYPE MGD_ID_COMPONENT_VARRAY is VARRAY (128) of MGD_ID_COMPONENT;
属性
なし
使用上の注意
なし
例
例については、「MGD_IDコンストラクタ・ファンクション」を参照してください。
MGD_ID
タイプは、RFIDアプリケーション内での識別コードを表します。このタイプは、標準のEPCビット・エンコーディングを使用するRFIDタグ、およびEPC標準に含まれないタグ・エンコーディングを使用するRFIDタグを表します。
構文
CREATE OR REPLACE TYPE MGD_ID as object (category_id VARCHAR2(256), components MGD_ID_COMPONENT_VARRAY);
属性
表235-3 MGD_IDオブジェクト・タイプの属性
属性 | 説明 |
---|---|
|
このコードのコード・カテゴリのカテゴリ識別子。 |
|
名前/値属性としてのコンポーネントのリスト。 |
メソッド
表235-4に、MGD_IDオブジェクト・タイプのメソッドを示します。
表235-4 MGD_IDのメソッド
メソッド | 説明 |
---|---|
|
渡されたパラメータに基づいてMGD_IDオブジェクトを作成し、自身を結果として戻します。 |
|
指定した形式でMGD_IDの文字列表現を戻します。 |
|
指定したMGD_IDコンポーネントの文字列値を戻します。 |
|
MGD_IDオブジェクトのセミコロン(;)区切りのコンポーネントの名前/値ペアの文字列値を戻します。 |
|
指定した別の形式に識別子を変換した結果を戻します。 |
使用上の注意
なし
例
例については、MGD_IDサブプログラムの要約および識別コード・パッケージの使用方法に関する項を参照してください。
表235-5に、MGD_IDオブジェクト・タイプのサブプログラムを示します。
特に明記されていないかぎり、MGD_IDオブジェクト・タイプに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。
表235-5 MGD_IDオブジェクト・タイプのサブプログラム
サブプログラム | 説明 |
---|---|
|
渡されたパラメータに基づいてMGD_IDオブジェクトを作成し、自身を結果として戻します。 |
|
指定した形式でMGD_IDオブジェクトの文字列表現を戻します。 |
|
指定したMGD_IDコンポーネントの文字列値を戻します。 |
|
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;
パラメータ
表235-6 MGD_IDコンストラクタ・ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
カテゴリ識別子。 |
|
コンポーネントの名前/値ペアのリスト。 |
|
「EPC」などのカテゴリ名。 |
|
カテゴリ・バージョン。NULLの場合、指定したカテゴリ名の最新バージョンが使用されます。 |
|
指定したカテゴリ内のコード体系の識別子文字列(形式は任意)。 たとえば、SGTIN-96エンコーディングの場合、識別子の形式はBINARY、PURE_IDENTITY、TAG_ENCODING、LEGACYのいずれかにすることができます。 TDTマークアップ・ファイルの文法またはパターンの1つに従って文字列として表されます。たとえば、文字0と1で構成されるバイナリ文字列、URI(タグ・エンコーディングまたはPURE_IDENTITY)または入力用の文字列形式として表現されるシリアル化されたレガシー・コード(SGTINコード体系のgtin=00037000302414;serial=10419703など)です。 |
|
表現内にオブジェクトを作成する場合に必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのキーと値を区切るデリミタとして、セミコロン(;)が使用されます。たとえば、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;
パラメータ
表235-7 FORMATファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表現内にオブジェクトを作成する場合に必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのキーと値を区切るデリミタとして、セミコロン(;)が使用されます。たとえば、GTINコードの場合、パラメータ文字列は次のようになります。 filter=3;companyprefixlength=7;taglength=96 |
|
MGD_IDコンポーネントをフォーマットする、サポート対象の出力形式のいずれか。
|
使用上の注意
なし
例
例については、「GET_COMPONENTファンクション」を参照してください。
このファンクションは、指定したMGD_IDコンポーネントの値を戻します。
構文
function GET_COMPONENT ( component_name IN VARCHAR2) RETURN VARCHAR2 DETERMINISTIC;
パラメータ
使用上の注意
コードが無効なコードの場合は、その構造がメタデータ表で定義されていないことを意味し、エラーが発生します。
コードが有効でも必要なコンポーネントを含まない場合、NULL
が戻されます。
例
次の例は、この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オブジェクトのセミコロン(;)で区切られたコンポーネントの名前/値ペアを戻します。
構文
function TO_STRING RETURN VARCHAR2;
パラメータ
なし
使用上の注意
なし
例
次の例は、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;
パラメータ
表235-9 TRANSLATEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
カテゴリの名前。 |
|
カテゴリ・バージョン。NULLの場合、指定したカテゴリ名の最新バージョンが使用されます。 |
|
TDTマークアップ・ファイルの文法またはパターンの1つに従った文字列として表されるEPC識別子。たとえば、文字0と1で構成されるバイナリ文字列、URI(タグ・エンコーディングまたはPURE_IDENTITY)または入力用の文字列形式として表現されるシリアル化されたレガシー・コード(SGTINコード体系のgtin=00037000302414;serial=10419703など)です。 |
|
表現内にオブジェクトを作成する場合に必要な追加パラメータのリスト。リストは、キー/値ペアを含むパラメータ文字列として表現されます。キー/値ペアのキーと値を区切るデリミタとして、セミコロン(;)が使用されます。たとえば、GTINコードの場合、パラメータ文字列は次のようになります。 filter=3;companyprefixlength=7;taglength=96 |
|
MGD_IDコンポーネントが変換される、サポート対象の出力形式のいずれか。
|
使用上の注意
PURE IDENTITY表現からバイナリ表現に変換するときは、parameter_list
パラメータを使用してフィルタ値を値として提供する必要があります。
例
次の例は、ある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. . . .