178 DBMS_SQL_TRANSLATOR
DBMS_SQL_TRANSLATOR
パッケージには、SQL翻訳プロファイルを作成、構成および使用するためのインタフェースが用意されています。
この章のトピックは、次のとおりです:
参照:
『Oracle Database移行ガイド』のSQL翻訳フレームワークのアーキテクチャと概要
178.1 DBMS_SQL_TRANSLATORのセキュリティ・モデル
DBMS_SQL_TRANSLATOR
は実行者権限のパッケージです。
SQL文またはエラーの翻訳時に、トランスレータ・パッケージ・プロシージャは、SQL文が解析されている対象と同じ現在のユーザーおよび現在のスキーマを使用して呼び出されます。トランスレータ・パッケージの所有者には、現在のユーザーのTRANSLATE SQL
ユーザー権限が付与される必要があります。
さらに、現在のユーザーには、トランスレータ・パッケージ上のEXECUTE
権限が付与される必要があります。
178.2 DBMS_SQL_TRANSLATORの定数
DBMS_SQL_TRANSLATOR
は、パラメータ値の指定時に使用するいくつかの定数を定義します。
これらを、次の表に示します。
Table 178-1 DBMS_SQL_TRANSLATORの定数
定数 | 値 | タイプ | 説明 |
---|---|---|---|
|
|
|
SQL翻訳プロファイル属性の名前で、この属性は、所有者のスキーマにあるSQL翻訳プロファイルのスキーマ・オブジェクト・タイプに対してエディショニングが後で有効化される場合に、SQL翻訳プロファイルがエディション化オブジェクトか、または非エディション化オブジェクトになることを指定します(「操作上のノート」を参照)。 |
|
|
|
SQL翻訳プロファイル属性の名前で、この属性は、プロファイルが外部SQL構文の翻訳用であるかどうかを示します(「操作上のノート」を参照)。 |
|
|
|
SQL翻訳プロファイル属性の名前で、この属性は、プロファイルでデータベース・アラート・ログ内の翻訳エラーを記録するかどうかを制御します(「操作上のノート」を参照)。 |
|
|
|
SQL翻訳プロファイル属性の名前で、この属性は、SQL文またはエラーの翻訳に失敗した場合にプロファイルで翻訳エラーを生成するかどうかを制御します(「操作上のノート」を参照)。 |
|
|
|
SQL翻訳プロファイル属性の名前で、この属性は、プロファイルで新しいSQL文およびエラーを翻訳するかどうかを制御します(「操作上のノート」を参照)。 |
|
|
|
トレースを制御するSQL翻訳プロファイル属性の名前(「操作上のノート」を参照)。 |
|
|
|
トランスレータ・パッケージを指定するSQL翻訳プロファイル属性の名前(「操作上のノート」を参照)。 |
|
|
|
SQL翻訳プロファイル属性をtrueに設定する値です(「操作上のノート」)。 |
|
|
|
SQL翻訳プロファイル属性をfalseに設定する値です(「操作上のノート」)。 |
178.3 DBMS_SQL_TRANSLATORの操作上のノート
プロファイルを変更するサブプログラムには、DDLトランザクション・セマンティクスがあり、起動されるとセッションでオープンになっているトランザクションがコミットされます。
ATTR_EDITIONABLEの定数
デフォルトでは、エディションの有効化がtrueです。
ATTR_FOREIGN_SQL_SYNTAXの定数
デフォルトでは、外部SQL構文がtrueです。
ATTR_LOG_TRANSLATION_ERRORの定数
-
SQL翻訳プロファイルでログ翻訳が有効化されていて、SQL文またはエラーにカスタム翻訳が見つからない場合は、アラート・ログがデータベースのアラート・ログに書き込まれます。これにより、ユーザーは、プロファイル内のカスタム翻訳にあるすべてのエラーを捕捉できます。
-
デフォルトでは、ログ翻訳エラーはfalseです。
ATTR_RAISE_TRANSLATION_ERRORの定数
デフォルトでは、翻訳エラーの生成はfalseです。
ATTR_TRANSLATE_NEW_SQLの定数
-
SQL翻訳プロファイル属性の名前で、この属性は、プロファイルで新しいSQL文およびエラーを翻訳するかどうかを制御します。翻訳する場合に、翻訳パッケージが登録されている場合は、そのパッケージによって、カスタム翻訳でまだ翻訳されていない新しいSQL文またはエラーを翻訳し、またその新しい翻訳をカスタム翻訳として登録します。翻訳しない場合は、どのようなSQL文またはエラーが新規に発生しても翻訳エラーになります。
-
デフォルトでは、新しいSQL文およびエラーの翻訳はtrueです。
ATTR_TRACE_TRANSLATIONの定数
-
トレースがSQL翻訳プロファイルで有効な場合、データベース・セッションのプロファイルによって翻訳された任意のSQL文またはエラー、およびその翻訳がデータベース・セッションのトレース・ファイルに書き込まれます。
-
トレースはデフォルトで無効になっています。
ATTR_TRANSLATORの定数
-
トランスレータ・パッケージは、次の3つのプロシージャを含むPL/SQLパッケージである必要があります。TRANSLATE_SQLプロシージャおよびTRANSLATE_ERRORプロシージャは、SQL文およびエラーを翻訳するためにコールされます。翻訳プロシージャのパラメータの名前がこれに続く必要があります。
PROCEDURE TRANSLATE_SQL( sql_text IN CLOB, translated_text OUT CLOB); PROCEDURE TRANSLATE_ERROR( error_code IN BINARY_INTEGER, translated_code OUT BINARY_INTEGER, translated_sqlstate OUT VARCHAR2); Parameters: profile_name - profile name sql_text - SQL statement to be translated translated_text - translated SQL statement error_code - Oracle error code translated_code - translated error code translated_sqlstate - translated SQLSTATE
-
translated_text
、translated_code
またはtranslated_sqlstate
でNULL
が返される場合は、翻訳の必要がないかわりに、元のSQL文、エラー・コードまたはSQLSTATE
を使用することが示されます。 -
トランスレータ・パッケージの名前は、
[schema.]package_name
形式のデータベース・パッケージのネーミング規則に従います。スキーマ名およびパッケージ名が使用される場合、二重引用符で囲まれていないかぎり、デフォルトで大文字に設定されます。たとえば、トランスレータ・パッケージの設定では、translator => 'dbms_tsql_translator'
は、translator => 'Dbms_Tsql_Translator'
およびtranslator => 'DBMS_TSQL_TRANSLATOR'
と同じですが、translator => '"dbms_tsql_translator"'
とは同じではありません。デフォルトのスキーマ名はプロファイルの所有者です。 -
トランスレータ属性はデフォルトでは設定されません。
ATTR_VALUE_TRUEの定数
SQL翻訳プロファイル属性をtrueに設定する値です。
ATTR_VALUE_FALSEの定数
SQL翻訳プロファイル属性をfalseに設定する値です。
178.4 DBMS_SQL_TRANSLATORの例外
次の表に、DBMS_SQL_TRANSLATOR
パッケージで発生する例外を示します。
表178-2 DBMS_SQL_TRANSLATORで発生する例外
例外 | エラー・コード | 説明 |
---|---|---|
|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
|
ユーザーには、この操作の権限がありません |
|
|
プロファイルが存在しません |
|
|
プロファイルの所有者が存在しません |
|
|
SQL文またはエラー・コードの翻訳が見つかりません |
|
|
プロファイルがすでに存在します |
178.5 DBMS_SQL_TRANSLATORの例
これは、DBMS_SQL_TRANSLATOR
を使用した基本SQL翻訳の例です。
基本SQL翻訳
BEGIN DBMS_SQL_TRANSLATOR.CREATE_PROFILE( profile_name => ' tsql_application'); DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE( profile_name => 'tsql_application', attribute_name => DBMS_SQL_TRANSLATOR.ATTR_TRANSLATOR, attribute_value => 'migration_repo.sybase_tsql_translator'); END;
178.6 DBMS_SQL_TRANSLATORサブプログラムの要約
この表は、DBMS_SQL_TRANSLATOR
サブプログラムを示し、簡単に説明しています。
表178-3 DBMS_SQL_TRANSLATORパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
SQL翻訳プロファイルを作成します。 |
|
SQL翻訳プロファイルのSQL文のカスタム翻訳を登録解除します。 |
|
SQL翻訳プロファイルのOracleエラー・コードおよび |
|
SQL翻訳プロファイルおよびその内容を削除します。 |
|
SQL翻訳プロファイルでOracleエラー・コードのカスタム翻訳を有効または無効にします。 |
|
SQL翻訳プロファイルでSQL文のカスタム翻訳を有効または無効にします。 |
|
SQL翻訳プロファイルの内容をエクスポートします。 |
|
SQL翻訳プロファイルの内容をインポートします。 |
|
SQL翻訳プロファイルのOracleエラー・コードおよび |
|
SQL翻訳プロファイルのSQL文のカスタム翻訳を登録します。 |
|
SQL翻訳プロファイルの属性を設定します。 |
|
SQL翻訳プロファイルのSQL文のハッシュ値を計算します。 |
|
SQL翻訳プロファイルのSQL文のSQL識別子を計算します。 |
|
SQL翻訳プロファイルを使用して、Oracleエラー・コードおよびANSI |
|
SQL翻訳プロファイルを使用して、SQL文を翻訳します。 |
178.6.1 CREATE_PROFILEプロシージャ
このプロシージャは、SQL翻訳プロファイルを作成します。
構文
DBMS_SQL_TRANSLATOR.CREATE_PROFILE ( profile_name IN VARCHAR2);
パラメータ
表178-4 CREATE_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
例外
表178-5 CREATE_PROFILEプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルがすでに存在します |
使用上のノート
-
SQL翻訳プロファイルは、SQL翻訳プロファイル・ネームスペースにあるデータベース・スキーマ・オブジェクトです。その名前は、
[schema.]name
形式のデータベース・オブジェクトのネーミング規則に従います。スキーマ名およびプロファイル名がDBMS_SQL_TRANSLATOR
パッケージで使用される場合、二重引用符で囲まれていないかぎり大文字になります。たとえば、翻訳プロファイルprofile_name => 'tsql_application'
は、profile_name => 'Tsql_Application'
およびprofile_name => 'TSQL_APPLICATION'
と同じですが、profile_name => '"tsql_application"'
とは同じではありません。 -
SQL翻訳プロファイルは、エディション化可能なオブジェクト・タイプです。
-
SQL翻訳プロファイルは、マルチテナント・コンテナ・データベース(CDB)の共通オブジェクトとして作成できません。
-
SQL翻訳プロファイルを破棄するには、DROP_PROFILEプロシージャを使用します。
例
BEGIN DBMS_SQL_TRANSLATOR.CREATE_PROFILE(profile_name => 'tsql_application'); END;
178.6.2 DEREGISTER_SQL_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルのSQL文のカスタム翻訳を登録解除します。
構文
DBMS_SQL_TRANSLATOR.DEREGISTER_SQL_TRANSLATION ( profile_name IN VARCHAR2, sql_text IN CLOB);
パラメータ
表178-6 DEREGISTER_SQL_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
SQL文 |
例外
表178-7 DEREGISTER_SQL_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルがすでに存在します |
例
BEGIN DBMS_SQL_TRANSLATOR.DEREGISTER_SQL_TRANSLATION( profile_name => 'tsql_application', sql_text => 'select top 5 * from emp'); END;
178.6.3 DEREGISTER_ERROR_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATE
の翻訳を登録解除します。
構文
DBMS_SQL_TRANSLATOR.DEREGISTER_ERROR_TRANSLATION ( profile_name IN VARCHAR2, error_code IN PLS_INTEGER);
パラメータ
表178-8 DEREGISTER_ERROR_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
Oracleエラー・コード |
例外
表178-9 DEREGISTER_ERROR_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
例
BEGIN DBMS_SQL_TRANSLATOR.DEREGISTER_ERROR_TRANSLATION( profile_name => 'tsql_application', error_code => 1); END;
178.6.4 DROP_PROFILEプロシージャ
このプロシージャは、SQL翻訳プロファイルおよびその内容を削除します。
構文
DBMS_SQL_TRANSLATOR.DROP_PROFILE ( profile_name IN VARCHAR2);
パラメータ
表178-10 DROP_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
例外
表178-11 DROP_PROFILEプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
例
BEGIN DBMS_SQL_TRANSLATOR.DROP_PROFILE( profile_name => 'tsql_application'); END;
178.6.5 ENABLE_ERROR_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルでOracleエラー・コードのカスタム翻訳を有効または無効にします。
構文
DBMS_SQL_TRANSLATOR.ENABLE_ERROR_TRANSLATION ( profile_name IN VARCHAR2, sql_text IN CLOB, enable IN BOOLEAN DEFAULT TRUE);
パラメータ
表178-12 ENABLE_ERROR_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
SQL文 |
|
翻訳を有効または無効にします |
例外
表178-13 ENABLE_ERROR_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
例
BEGIN DBMS_SQL_TRANSLATOR.ENABLE_ERROR_TRANSLATION( profile_name => 'tsql_application', sql_text => 'SELECT TOP 5 * FROM emp' enable => TRUE); END;
178.6.6 ENABLE_SQL_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルでSQL文のカスタム翻訳を有効または無効にします。
構文
DBMS_SQL_TRANSLATOR.ENABLE_SQL_TRANSLATION ( profile_name IN VARCHAR2, sql_text IN CLOB, enable IN BOOLEAN DEFAULT TRUE);
パラメータ
表178-14 ENABLE_SQL_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
SQL文 |
|
翻訳を有効または無効にします |
例外
表178-15 ENABLE_SQL_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
例
BEGIN DBMS_SQL_TRANSLATOR.ENABLE_SQL_TRANSLATION( profile_name => 'tsql_application', sql_text => 'select top 5 * from emp', enable => TRUE); END;
178.6.7 EXPORT_PROFILEプロシージャ
このプロシージャは、SQL翻訳プロファイルの内容をエクスポートします。
構文
DBMS_SQL_TRANSLATOR.EXPORT_PROFILE ( profile_name IN VARCHAR2, content OUT NOCOPY CLOB);
パラメータ
表178-16 EXPORT_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
プロファイルの内容 |
例外
表178-17 EXPORT_PROFILEプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
使用上のノート
-
SQL翻訳プロファイルの内容は、次のようにXML形式でエクスポートされます。プロファイル名はエクスポートされないことに注意してください。
SQLTranslationProfile Translator="translator package name" ForeignSQLSyntax="TRUE|FALSE" TranslateNewSQL="TRUE|FALSE" RaiseTranslationError="TRUE|FALSE" LogTranslationError="TRUE|FALSE" TraceTranslation="TRUE|FALSE" Editionable="TRUE|FALSE"> <SQLTranslations> <SQLTranslation Enabled="TRUE|FALSE"> <SQLText>original SQL text</SQLText> <TranslatedText>translated SQL text</TranslatedText> </SQLTranslation> ... </SQLTranslations> <ErrorTranslations> <ErrorTranslation Enabled="TRUE|FALSE"> <ErrorCode>Oracle error code</ErrorCode> <TranslatedCode>translated error code</TranslatedCode> <TranslatedSQLSTATE>translated SQLSTATE</TranslatedSQLSTATE> </ErrorTranslation> ... </ErrorTranslations> </SQLTranslationProfile>
-
内容をSQL翻訳プロファイルにインポートするには、IMPORT_PROFILEプロシージャを使用します。
例
DECLARE content CLOB; BEGIN DBMS_SQL_TRANSLATOR.EXPORT_PROFILE( profile_name => 'tsql_application', content => content); END;
178.6.8 IMPORT_PROFILEプロシージャ
このプロシージャは、SQL翻訳プロファイルの内容をインポートします。
構文
DBMS_SQL_TRANSLATOR.IMPORT_PROFILE ( profile_name IN VARCHAR2, content IN CLOB);
パラメータ
表178-18 IMPORT_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
プロファイルの内容 |
例外
表178-19 IMPORT_PROFILEプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
使用上のノート
-
SQL翻訳プロファイルの内容は、EXPORT_PROFILEプロシージャで使用されるXML形式である必要があります。すべての要素および属性はオプションです。
-
プロファイルが存在しない場合は作成されます。プロファイルが存在する場合、その内容によって既存の属性、トランスレータ・パッケージ、SQLまたはエラーの翻訳登録が上書きされます。
-
内容をSQL翻訳プロファイルにエクスポートするには、EXPORT_PROFILEプロシージャを使用します。
例
DECLARE content CLOB; BEGIN DBMS_SQL_TRANSLATOR.IMPORT_PROFILE( profile_name => 'tsql_application', content => content); END;
178.6.9 REGISTER_ERROR_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATE
のカスタム翻訳を登録します。
構文
DBMS_SQL_TRANSLATOR.REGISTER_ERROR_TRANSLATION ( profile_name IN VARCHAR2, error_code IN PLS_INTEGER, translated_code IN PLS_INTEGER DEFAULT NULL, translated_sqlstate IN VARCHAR2 DEFAULT NULL, enable IN BOOLEAN DEFAULT TRUE);
パラメータ
表178-20 REGISTER_ERROR_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
Oracleエラー・コード |
|
翻訳されたエラー・コード |
|
翻訳された |
|
翻訳を有効または無効にします |
例外
表178-21 REGISTER_ERROR_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
使用上のノート
-
Oracle Databaseは、翻訳プロファイルを使用してOracleエラー・コードを翻訳するときに、まず登録されたカスタム翻訳を検索し、一致が見つからなかった場合にのみトランスレータ・パッケージを起動します。
-
プロファイルに翻訳が登録されている場合、翻訳を無効にできます。Oracle Databaseは、無効になっている翻訳を検索しません。
-
エラー・コードおよび
SQLSTATE
の古い翻訳がある場合、新しい翻訳に置き換えられます。 -
翻訳を登録解除するには、DEREGISTER_ERROR_TRANSLATIONプロシージャを使用します。
例
BEGIN DBMS_SQL_TRANSLATOR.REGISTER_ERROR_TRANSLATION( profile_name => 'tsql_application', error_code => 1, translated_code => 2601); END;
178.6.10 REGISTER_SQL_TRANSLATIONプロシージャ
このプロシージャは、SQL翻訳プロファイルのSQL文のカスタム翻訳を登録します。
構文
DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION ( profile_name IN VARCHAR2, sql_text IN CLOB, translated_text IN CLOB DEFAULT NULL, enable IN BOOLEAN DEFAULT TRUE);
パラメータ
表178-22 REGISTER_SQL_TRANSLATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
SQL文 |
|
翻訳されたSQL文 |
|
翻訳を有効または無効にします |
例外
表178-23 REGISTER_SQL_TRANSLATIONプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
使用上のノート
-
Oracle Databaseは、翻訳プロファイルを使用して文を翻訳するときに、まず登録されたカスタム翻訳を検索し、一致が見つからなかった場合にのみトランスレータ・パッケージを起動します。
-
プロファイルに翻訳が登録されている場合、翻訳を無効にできます。Oracle Databaseは、無効になっている翻訳を検索しません。
-
translated_text
がNULL
の場合、翻訳の必要はなく、元の文が使用されます。 -
SQL文の古い翻訳がある場合、新しい翻訳に置き換えられます。
-
翻訳を登録解除するには、DEREGISTER_SQL_TRANSLATIONプロシージャを使用します。
例
BEGIN DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION( profile_name => 'tsql_application', sql_text => 'select top 5 * from emp', translated_text => 'SELECT * FROM emp WHERE rownum <= :SYS_N_001'); END;
178.6.11 SET_ATTRIBUTEプロシージャ
このプロシージャは、SQL翻訳プロファイルの属性を設定します。
構文
DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE ( profile_name IN VARCHAR2, attribute_name IN VARCHAR2, attribute_value IN VARCHAR2;)
パラメータ
表178-24 SET_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロファイルの名前 |
|
属性の名前 |
|
属性の値 |
例外
表178-25 SET_ATTRIBUTEプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
使用上のノート
「定数」を参照してください
178.6.12 SQL_HASHファンクション
このプロシージャは、セッションのSQL翻訳プロファイルでSQL文のハッシュ値を計算します。
構文
DBMS_SQL_TRANSLATOR.SQL_HASH ( sql_text IN CLOB) RETURN NUMBER DETERMINISTIC;
パラメータ
表178-26 SQL_HASHファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQL文 |
戻り値
SQL翻訳プロファイルのSQL文のハッシュ値を戻します。
例外
表178-27 SQL_HASHファンクションの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
例
DECLARE sqltext CLOB; txltext CLOB; sqlhash NUMBER; BEGIN sqltext := 'SELECT TOP 1 * FROM emp'; sqlhash := DBMS_SQL_TRANSLATOR.SQL_HASH (sqltext); SELECT translated_text INTO txltext FROM user_sql_translations WHERE sql_hash = sqlhash AND DBMS_LOB.COMPARE (sql_text, sqltext) = 0; END;
178.6.13 SQL_IDファンクション
このプロシージャは、SQL翻訳プロファイルのSQL文のSQL識別子を計算します。
構文
DBMS_SQL_TRANSLATOR.SQL_ID ( sql_text IN CLOB) RETURN VARCHAR2 DETERMINISTIC;
パラメータ
表178-28 SQL_IDファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQL文 |
戻り値
SQL翻訳プロファイルのSQL文のSQL IDを戻します。
例外
表178-29 SQL_IDファンクションの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
例
DECLARE sqltext CLOB; sqlid VARCHAR2(13); BEGIN sqltext := 'SELECT TOP 1 * FROM emp'; sqlid := DBMS_SQL_TRANSLATOR.SQL_ID (sqltext); END;
178.6.14 TRANSLATE_ERRORプロシージャ
このプロシージャは、セッションのSQL翻訳プロファイルを使用してOracleエラー・コードとANSI SQLSTATEを翻訳します。
構文
DBMS_SQL_TRANSLATOR.TRANSLATE_ERROR ( error_code IN PLS_INTEGER, translated_code OUT PLS_INTEGER, translated_sqlstate OUT NOCOPY VARCHAR2);
パラメータ
表178-30 TRANSLATE_ERRORプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracleエラー・コード |
|
翻訳されたエラー・コード |
|
翻訳された |
例外
表178-31 TRANSLATE_ERRORプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
|
SQL文またはエラー・コードの翻訳が見つかりません |
例
DECLARE translated_code BINARY_INTEGER; translated_sqlstate VARCHAR2(5); BEGIN DBMS_SQL_TRANSLATOR.TRANSLATE_ERROR( error_code => 1, translated_code => translated_code, translated_sqlstate => translated_sqlstate); END;
178.6.15 TRANSLATE_SQLプロシージャ
このプロシージャは、SQL翻訳プロファイルを使用して、SQL文を翻訳します。
構文
DBMS_SQL_TRANSLATOR.TRANSLATE_SQL ( sql_text IN CLOB, translated_text OUT NOCOPY CLOB);
パラメータ
表178-32 TRANSLATE_SQLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL文 |
|
翻訳されたSQL文 |
例外
表178-33 TRANSLATE_SQLプロシージャの例外
例外 | 説明 |
---|---|
|
不正な引数がPL/SQLインタフェースに渡されました |
|
ユーザーには、この操作の権限がありません |
|
プロファイルの所有者が存在しません |
|
プロファイルが存在しません |
例
ALTER SESSION SET SQL_TRANSLATION_PROFILE = tsql_application; DECLARE translated_text CLOB; BEGIN DBMS_SQL_TRANSLATOR.TRANSLATE_SQL( sql_text => 'select top 5 * from emp', translated_text => translated_text); END;