ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

25 DBMS_ASSERT

DBMS_ASSERTパッケージは、入力値のプロパティを検証するためのインタフェースを提供します。


関連項目:

PL/SQLでのSQLインジェクションの回避の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。


DBMS_ASSERTの使用方法


使用上の注意

ファンクションでアサートされたプロパティを判断する条件が満たされていない場合は、値のエラーが発生します。条件が満たされた場合は、戻り値として入力値が戻されます。通常、値は変更されずに戻されますが、一部のファンクションでは変更された値が戻されます。


DBMS_ASSERTサブプログラムの要約

表25-1 DBMS_ASSERTパッケージのサブプログラム

サブプログラム 説明

ENQUOTE_LITERALファンクション


文字列リテラルを引用符で囲みます。

ENQUOTE_NAMEファンクション


名前を二重引用符で囲みます。

NOOPファンクション


チェックなしで値を戻します。

QUALIFIED_SQL_NAMEファンクション


入力文字列が修飾SQL名であることを検証します。

SCHEMA_NAMEファンクション


入力文字列が既存のスキーマ名であることを検証します。

SIMPLE_SQL_NAMEファンクション


入力文字列が単純SQL名であることを検証します。

SQL_OBJECT_NAMEファンクション


入力パラメータ文字列が既存のSQLオブジェクトの修飾SQL識別子であることを検証します。



ENQUOTE_LITERALファンクション

このファンクションは、文字列リテラルを引用符で囲みます。

構文

DBMS_ASSERT.ENQUOTE_LITERAL (
   str            VARCHAR2)
RETURN VARCHAR2;

パラメータ

表25-2 ENQUOTE_LITERALファンクションのパラメータ

パラメータ 説明

str

引用符で囲む文字列。


使用上の注意


ENQUOTE_NAMEファンクション

このファンクションは、名前を二重引用符で囲みます。

構文

DBMS_ASSERT.ENQUOTE_NAME (
   str            VARCHAR2,
   capitalize     BOOLEAN DEFAULT TRUE)
RETURN VARCHAR2;

パラメータ

表25-3 ENQUOTE_NAMEファンクションのパラメータ

パラメータ 説明

str

引用符で囲む文字列。

capitalize

TRUEまたはデフォルトに設定すると、引用符で囲まれていないstrの英字は大文字に変換されます。



NOOPファンクション

このファンクションは、チェックなしで値を戻します。

構文

DBMS_ASSERT.NOOP (
   str      VARCHAR2 CHARACTER SET ANY_CS)
 RETURN     VARCHAR2 CHARACTER SET str%CHARSET;
DBMS_ASSERT.NOOP (
   str      CLOB CHARACTER SET ANY_CS)
 RETURN     CLOB CHARACTER SET str%CHARSET;

パラメータ

表25-4 NOOPファンクションのパラメータ

パラメータ 説明

str

入力値。



QUALIFIED_SQL_NAMEファンクション

このファンクションは、入力文字列が修飾SQL名であることを検証します。

構文

DBMS_ASSERT.QUALIFIED_SQL_NAME (
   str      VARCHAR2 CHARACTER SET ANY_CS)
 RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表25-5 QUALIFIED_SQL_NAMEファンクションのパラメータ

パラメータ 説明

str

入力値。


例外

ORA44004: 修飾SQL名が無効です

使用上の注意

修飾SQL名<qualified name>は、次の文法で表現できます。

   <local qualified name> ::= <simple name> {'.' <simple name>}
   <database link name> ::= <local qualified name> ['@' <connection string>]
   <connection string> ::= <simple name>
   <qualified name> ::= <local qualified name> ['@' <database link name>]

SCHEMA_NAMEファンクション

このファンクションは、入力文字列が既存のスキーマ名であることを検証します。

構文

DBMS_ASSERT.SCHEMA_NAME (
   str      VARCHAR2 CHARACTER SET ANY_CS)
 RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表25-6 SCHEMA_NAMEファンクションのパラメータ

パラメータ 説明

str

入力値。


例外

ORA44001: スキーマが無効です

使用上の注意

定義上は、スキーマ名は単純SQL名である必要はありません。たとえば、"FIRST LAST"は有効なスキーマ名です。したがって、スキーマ名の出力は、SQLテキストに連結する前に引用符で囲む必要があります。


SIMPLE_SQL_NAMEファンクション

このファンクションは、入力文字列が単純SQL名であることを検証します。

構文

DBMS_ASSERT.SIMPLE_SQL_NAME (
   str      VARCHAR2 CHARACTER SET ANY_CS)
 RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表25-7 SIMPLE_SQL_NAMEファンクションのパラメータ

パラメータ 説明

str

入力値。


例外

ORA44003: SQL名が無効です

使用上の注意


SQL_OBJECT_NAMEファンクション

このファンクションは、入力パラメータ文字列が既存のSQLオブジェクトの修飾SQL識別子であることを検証します。

構文

DBMS_ASSERT.SQL_OBJECT_NAME (
   str      VARCHAR2 CHARACTER SET ANY_CS)
 RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表25-8 SQL_OBJECT_NAMEファンクションのパラメータ

パラメータ 説明

str

入力値。


例外

ORA44002: オブジェクト名が無効です