CANONICALIZE プロシージャー - ストリングの正規化
CANONICALIZE プロシージャーは、入力ストリングに対してさまざまな操作を実行します。
CANONICALIZE プロシージャーは、入力ストリングに対して以下の操作を実行します。
- ストリングが二重引用符で囲まれていない場合、許可されている ID の文字が使用されていることを検査します。 正当な文字が使用されていない場合、例外がスローされます。 ストリングが二重引用符で囲まれている場合、すべての文字が許可されます。
- ストリングが二重引用符で囲まれておらず、ピリオドが含まれていない場合、すべての英字が大文字に変換され、前後のスペースが除去されます。
- ストリングが二重引用符で囲まれていて、ピリオドが含まれていない場合、二重引用符が除去されます。
- ストリングにピリオドが含まれていて、ストリングのどの部分も二重引用符で囲まれていない場合、ストリングの各部分が大文字に変換され、各部分が二重引用符で囲まれます。
- ストリングにピリオドが含まれていて、ストリングのいくつかの部分が二重引用符で囲まれている場合、二重引用符の部分は二重引用符を含めて変更されずに返され、二重引用符で囲まれていない部分は大文字で返され、二重引用符で囲まれます。
構文
パラメーター
- name
- 正規化されるストリングを指定する、タイプ VARCHAR(1024) の入力引数。
- canon_name
- 正規化されたストリングを返す、タイプ VARCHAR(1024) の出力引数。
- canon_len
- name の中の先頭文字から何バイトを正規化するかを指定する、INTEGER のタイプの入力引数。
許可
DBMS_UTILITY モジュールに対する EXECUTE 特権。
例
例 1: 以下のプロシージャーは、その入力パラメーターに CANONICALIZE プロシージャーを適用し、結果を表示します。
SET SERVEROUTPUT ON@
CREATE OR REPLACE PROCEDURE canonicalize(
IN p_name VARCHAR(4096),
IN p_length INTEGER DEFAULT 30)
BEGIN
DECLARE v_canon VARCHAR(100);
CALL DBMS_UTILITY.CANONICALIZE(p_name, v_canon, p_length);
CALL DBMS_OUTPUT.PUT_LINE('Canonicalized name ==>' || v_canon || '<==');
CALL DBMS_OUTPUT.PUT_LINE('Length: ' || LENGTH(v_canon));
END@
CALL canonicalize('Identifier')@
CALL canonicalize('"Identifier"')@
CALL canonicalize('"_+142%"')@
CALL canonicalize('abc.def.ghi')@
CALL canonicalize('"abc.def.ghi"')@
CALL canonicalize('"abc".def."ghi"')@
CALL canonicalize('"abc.def".ghi')@この例では、以下の出力が結果として戻ります。
SET SERVEROUTPUT ON
Db20000I The SET SERVEROUTPUT command completed successfully.
CREATE OR REPLACE PROCEDURE canonicalize(
IN p_name VARCHAR(4096),
IN p_length INTEGER DEFAULT 30)
BEGIN
DECLARE v_canon VARCHAR(100);
CALL DBMS_UTILITY.CANONICALIZE(p_name, v_canon, p_length);
CALL DBMS_OUTPUT.PUT_LINE('Canonicalized name ==>' || v_canon || '<==');
CALL DBMS_OUTPUT.PUT_LINE('Length: ' || LENGTH(v_canon));
END
Db20000I The SQL command completed successfully.
CALL canonicalize('Identifier')
Return Status = 0
Canonicalized name ==>IDENTIFIER<==
Length: 10
CALL canonicalize('"Identifier"')
Return Status = 0
Canonicalized name ==>Identifier<==
Length: 10
CALL canonicalize('"_+142%"')
Return Status = 0
Canonicalized name ==>_+142%<==
Length: 6
CALL canonicalize('abc.def.ghi')
Return Status = 0
Canonicalized name ==>"ABC"."DEF"."GHI"<==
Length: 17
CALL canonicalize('"abc.def.ghi"')
Return Status = 0
Canonicalized name ==>abc.def.ghi<==
Length: 11
CALL canonicalize('"abc".def."ghi"')
Return Status = 0
Canonicalized name ==>"abc"."DEF"."ghi"<==
Length: 17
CALL canonicalize('"abc.def".ghi')
Return Status = 0
Canonicalized name ==>"abc.def"."GHI"<==
Length: 15
