MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/dbmssqll.sql

Rem
Rem $Header: rdbms/admin/dbmssqll.sql /main/13 2015/02/24 06:59:17 rpang Exp $
Rem
Rem dbmssqll.sql
Rem
Rem Copyright (c) 2009, 2015, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      dbmssqll.sql - DBMS_SQL_transLator package specification
Rem
Rem    DESCRIPTION
Rem      This script contains package specification for DBMS_SQL_TRANSLATOR
Rem
Rem    NOTES
Rem      None
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmssqll.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmssqll.sql
Rem SQL_PHASE: DBMSSQLL
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdbms.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    rpang       01/15/15 - 17854208: add error logging functions
Rem    surman      12/29/13 - 13922626: Update SQL metadata
Rem    rpang       11/11/13 - 17637420: add translation comments APIs
Rem    rpang       08/26/12 - Rename SQL translation profile attributes
Rem    rpang       07/16/12 - API update
Rem    rpang       06/06/12 - 14165689: Add editionable attribute
Rem    rpang       04/10/12 - 13037650: Make profile object editionable
Rem    surman      03/27/12 - 13615447: Add SQL patching tags
Rem    rpang       09/22/11 - 13015720: Add ATTR_FOREIGN_SQL_SYNTAX attr
Rem    rpang       09/15/11 - Doc update
Rem    rpang       06/13/11 - Added enabling/disabling of translations
Rem    rpang       01/05/11 - Updated
Rem    rpang       12/30/09 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql

create or replace package dbms_sql_translator authid current_user as

  /*
    Package: DBMS_SQL_TRANSLATOR

    DBMS_SQL_TRANSLATOR is the PL/SQL package for creating, configuring and
    using SQL translation profiles.

    Notes:

    DBMSL_SQL_TRANSLATOR is a invoker-rights package. The subprograms in
    DBMS_SQL_TRANSLATOR that modify a profile carry DDL transaction semantics
    and when invoked will commit any open transaction in the session.
   */

  /*----------------------------------------------------------------------
    Constant: ATTR_TRANSLATOR

    The name of the SQL translation profile attribute that specifies the
    translator package. The translator package must be a PL/SQL package with
    the following two procedures that translate SQL statements and errors. The
    names of the parameters of the translate procedures are significant.

    | 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:
    |   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

    When translating a SQL statement or error, the translator package procedure
    will be invoked with the same current user and current schema as those in
    which the SQL statement is being parsed. The owner of the translator
    package must be granted the *TRANSLATE SQL* user privilege on the current
    user. And the current user must be granted the *EXECUTE* privilege on the
    translator package also.

    When NULL is returned in translated_text, translated_code or
    translated_sqlstate, it assumes that no translation is required and the
    original SQL statement, error code or SQLSTATE is used instead.

    The name of the translator package follows the naming rules for database
    packages of the form [schema.]package_name. When the schema and package
    names are used, they are uppercased by default unless surrounded by
    double quotes. For example, when setting a translator package,
    translator => 'dbms_tsql_translator' is the same as translator =>
    'Dbms_Tsql_Translator' and translator => 'DBMS_TSQL_TRANSLATOR', but not
    the same as translator => '"dbms_tsql_translator"'. If the schema name
    is omitted, the profile owner will be assumed.

    The translator attribute is not set by default.

    ----------------------------------------------------------------------
    Constant: ATTR_FOREIGN_SQL_SYNTAX

    The name of the SQL translation profile attribute that indicates if the
    profile is for the translation of foreign SQL syntax only. If true, only
    SQL statements marked as foreign SQL will be translated. If false, all
    SQL statements executed by the client application will be translated.

    Foreign SQL syntax is true by default.

    ----------------------------------------------------------------------
    Constant: ATTR_TRANSLATE_NEW_SQL

    The name of the SQL translation profile attribute that controls if the
    profile should translate new SQL statements and errors. If so, the
    translator package, if registered, will translate a new SQL statement or
    error not already translated in custom translations, and also register
    the new translation as custom translation. If not, any new SQL statement
    or error encountered will result in a translation error.

    Translate new SQL statements and errors is true by default.

    ----------------------------------------------------------------------
    Constant: ATTR_RAISE_TRANSLATION_ERROR

    The name of the SQL translation profile attribute that controls if the
    profile should raise translation error if a SQL statement or error fails
    to be translated. If not, the profile will attempt to execute or return
    the original SQL statement or error.

    Raise translation error is false by default.

    ----------------------------------------------------------------------
    Constant: ATTR_LOG_TRANSLATION_ERROR

    The name of the SQL translation profile attribute that controls if the
    profile should log translation error in the database alert log.

    Log translation error is false by default.

    ----------------------------------------------------------------------
    Constant: ATTR_TRACE_TRANSLATION

    The name of the SQL translation profile attribute that controls tracing.
    If trace translation is true in a SQL translation profile, any SQL
    statement or error translated by the profile in a database session and
    its translation will be written to the database session's trace file.

    Trace translation is false by default.

    ----------------------------------------------------------------------
    Constant: ATTR_EDITIONABLE

    The name of the SQL translation profile attribute that specifies whether
    the SQL translation profile becomes an editioned or noneditioned object if
    editioning is later enabled for the schema object type SQL translation
    profile in the owner's schema.

    Editionable is true by default.

    ----------------------------------------------------------------------
    Constant: ATTR_LOG_ERRORS

    The name of the SQL translation profile attribute that controls if the
    profile should log errors in translation dictionary tables.

    Log errors is false by default.
  */

  ATTR_TRANSLATOR
                       constant varchar2(30) := 'TRANSLATOR';
  ATTR_FOREIGN_SQL_SYNTAX
                       constant varchar2(30) := 'FOREIGN_SQL_SYNTAX';
  ATTR_TRANSLATE_NEW_SQL
                       constant varchar2(30) := 'TRANSLATE_NEW_SQL';
  ATTR_RAISE_TRANSLATION_ERROR
                       constant varchar2(30) := 'RAISE_TRANSLATION_ERROR';
  ATTR_LOG_TRANSLATION_ERROR
                       constant varchar2(30) := 'LOG_TRANSLATION_ERROR';
  ATTR_TRACE_TRANSLATION
                       constant varchar2(30) := 'TRACE_TRANSLATION';
  ATTR_EDITIONABLE
                       constant varchar2(30) := 'EDITIONABLE';
  ATTR_LOG_ERRORS
                       constant varchar2(30) := 'LOG_ERRORS';

  /*----------------------------------------------------------------------
    Constant: ATTR_VALUE_TRUE

    The value to set a SQL translation profile attribute to true.

    --------------------------
    Constant: ATTR_VALUE_FALSE

    The value to set a SQL translation profile attribute to false.

  */
  ATTR_VALUE_TRUE      constant varchar2(30) := 'TRUE';
  ATTR_VALUE_FALSE     constant varchar2(30) := 'FALSE';

  /*----------------------------------------------------------------------
    Exception: bad_argument

      A bad argument was passed to the PL/SQL API.

    ---------------------------------
    Exception: insufficient_privilege

      The user has insufficient privilege for the operation.

    ---------------------------------
    Exception: no_such_user

      The profile owner does not exist.

    ---------------------------------
    Exception: no_such_profile

      The profile does not exist.

    ---------------------------------
    Exception: profile_exists

      The profile exists already.

    ---------------------------------
    Exception: no_translation_found

      No translation of the SQL statement or error code was found.
  */
  bad_argument           exception;
  insufficient_privilege exception;
  no_such_user           exception;
  no_such_profile        exception;
  profile_exists         exception;
  no_translation_found   exception;

  pragma exception_init(bad_argument,           -29261);
  pragma exception_init(insufficient_privilege,  -1031);
  pragma exception_init(no_such_user,            -1435);
  pragma exception_init(no_such_profile,        -24252);
  pragma exception_init(profile_exists,           -955);
  pragma exception_init(no_translation_found,   -24253);

  /*----------------------------------------------------------------------
    Procedure: create_profile

      Creates a SQL translation profile.

    Parameters:
      profile_name    - profile name
      editionable     - is the profile editionable?

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <profile_exists>

    Notes:
    - A SQL translation profile is a database schema object that resides in
      SQL translation profile namespace. Its name follows the naming rules for
      database objects of the form [schema.]name. When the schema and profile
      names are used in the DBMS_SQL_TRANSLATOR package, they are uppercased
      unless surrounded by double quotes. For example, the translation profile
      profile_name => 'tsql_application' is the same as profile_name =>
      'Tsql_Application' and profile_name => 'TSQL_APPLICATION', but not the
      same as profile_name => '"tsql_application"'.

    - SQL translation profile is an editionable object type.

    - A SQL translation profile cannot be created as a common object in a
      consolidated database.

    - To destroy a SQL translation profile, use <drop_profile>.

    Examples:
    | begin
    |   dbms_sql_translator.create_profile(profile_name => 'tsql_application');
    | end;
  */
  procedure create_profile(profile_name in varchar2,
                           editionable  in boolean default true);
  PRAGMA SUPPLEMENTAL_LOG_DATA(create_profile, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: register_sql_translation

      Registers a custom translation of a SQL statement in a SQL translation
      profile.

    Parameters:
      profile_name    - profile name
      sql_text        - SQL statement
      translated_text - translated SQL statement
      enable          - enable or disable the translation

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Notes:
    - When the Oracle database translates a statement using a translation
      profile, it attempts to look up the registered custom translation first
      and only if no match is found will it invoke the translator package.

    - When a translation is registered in a profile, it may be disabled.
      Disabled translations will not be looked up during translation until
      they are enabled.

    - When translated_text is NULL, it means no translation is required and the
      original statement is used instead.

    - The old translation of the SQL statement, if present, will be replaced
      with the new translation.

    - SQL statements will be canonicalized before being registered or
      translated.

    - To deregister a translation, use <deregister_sql_translation>.

    Examples:
    | 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 <= 5');
    | end;
  */
  procedure register_sql_translation(profile_name    in varchar2,
                                     sql_text        in clob,
                                     translated_text in clob    default null,
                                     enable          in boolean default true);
  PRAGMA SUPPLEMENTAL_LOG_DATA(register_sql_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: enable_sql_translation

      Enables or disables a custom translation of a SQL statement in a SQL
      translation profile.

    Parameters:
      profile_name    - profile name
      sql_text        - SQL statement
      enable          - enable or disable the translation

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.enable_sql_translation(
    |       profile_name => 'tsql_application',
    |       sql_text     => 'select top 5 * from emp'
    |       enable       => true);
    | end;
  */
  procedure enable_sql_translation(profile_name in varchar2,
                                   sql_text     in clob,
                                   enable       in boolean default true);
  PRAGMA SUPPLEMENTAL_LOG_DATA(enable_sql_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: deregister_sql_translation

      Deregisters the custom translation of a SQL statement in a SQL
      translation profile.

    Parameters:
      profile_name    - profile name
      sql_text        - SQL statement

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.deregister_sql_translation(
    |       profile_name => 'tsql_application',
    |       sql_text     => 'select top 5 * from emp');
    | end;
  */
  procedure deregister_sql_translation(profile_name in varchar2,
                                       sql_text     in clob);
  PRAGMA SUPPLEMENTAL_LOG_DATA(deregister_sql_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: register_error_translation

      Registers a custom translation of an Oracle error code and SQLSTATE in a
      SQL translation profile.

    Parameters:
      profile_name        - profile name
      error_code          - Oracle error code
      translated_code     - translated error code
      translated_sqlstate - translated SQLSTATE
      enable              - enable or disable the translation

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Notes:
    - When the Oracle database translates an Oracle error code using a
      translation profile, it attempts to look up the registered custom
      translation first and only if no match is found will it invoke the
      translator package.

    - When a translation is registered in a profile, it may be disabled.
      Disabled translations will not be looked up during translation until
      they are enabled.

    - The old translation of the error code and SQLSTATE, if present, will be
      replaced with the new translation.

    - To deregister a translation, use <deregister_error_translation>.

    Examples:
    | begin
    |   dbms_sql_translator.register_error_translation(
    |       profile_name    => 'tsql_application',
    |       error_code      => 1,
    |       translated_code => 2601);
    | end;
  */
  procedure 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);
  PRAGMA SUPPLEMENTAL_LOG_DATA(register_error_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: enable_error_translation

      Enables or disables a custom translation of an Oracle error code in a SQL
      translation profile.

    Parameters:
      profile_name    - profile name
      error_code      - Oracle error code
      enable          - enable or disable the translation

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.enable_error_translation(
    |       profile_name => 'tsql_application',
    |       error_code   => 1,
    |       enable       => true);
    | end;
  */
  procedure enable_error_translation(
              profile_name        in varchar2,
              error_code          in pls_integer,
              enable              in boolean default true);
  PRAGMA SUPPLEMENTAL_LOG_DATA(enable_error_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: deregister_error_translation

      Deregisters the custom translation of an Oracle error code and SQLSTATE
      in a SQL translation profile.

    Parameters:
      profile_name    - profile name
      error_code      - Oracle error code

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.deregister_error_translation(
    |       profile_name => 'tsql_application',
    |       error_code   => 1);
    | end;
  */
  procedure deregister_error_translation(
              profile_name       in varchar2,
              error_code         in pls_integer);
  PRAGMA SUPPLEMENTAL_LOG_DATA(deregister_error_translation, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: set_attribute

      Sets an attribute of a SQL translation profile.

    Parameters:
      profile_name    - profile name
      attribute_name  - attribute name
      attribute_value - attribute value

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    See also:
      <Constants>
  */
  procedure set_attribute(profile_name    in varchar2,
                          attribute_name  in varchar2,
                          attribute_value in varchar2);
  PRAGMA SUPPLEMENTAL_LOG_DATA(set_attribute, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: export_profile

      Exports the content of a SQL translation profile.

    Parameters:
      profile_name    - profile name
      content         - content of the profile

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Notes:
    - The content of the SQL translation profile will be exported in XML format
      as follows. Note that the profile name will not be exported.

      | <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>

    - To import the content to a SQL translation profile, use <import_profile>.

    Examples:
    | declare
    |   content CLOB;
    | begin
    |   dbms_sql_translator.export_profile(
    |       profile_name => 'tsql_application',
    |       content      => content);
    | end;
  */
  procedure export_profile(profile_name in         varchar2,
                           content      out nocopy clob);

  /*----------------------------------------------------------------------
    Procedure: import_profile

      Imports the content of a SQL translation profile.

    Parameters:
      profile_name    - profile name
      content         - content of the profile

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>

    Notes:
    - The content of the SQL translation profile should be in XML format as
      used by <export_profile>. All elements and attributes are optional.

    - If the profile does not exist, it will be created. If it exists, the
      content will override any existing attribute, translator package,
      SQL or error translation registration.

    - To export the content to a SQL translation profile, use <export_profile>.

    Examples:
    | declare
    |   content CLOB;
    | begin
    |   dbms_sql_translator.import_profile(
    |       profile_name => 'tsql_application',
    |       content      => content);
    | end;
  */
  procedure import_profile(profile_name in varchar2,
                           content      in clob);

  /*----------------------------------------------------------------------
    Procedure: drop_profile

      Drops a SQL translation profile and its contents.

    Parameters:
      profile_name    - profile name

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.drop_profile(profile_name => 'tsql_application');
    | end;
  */
  procedure drop_profile(profile_name in varchar2);
  PRAGMA SUPPLEMENTAL_LOG_DATA(drop_profile, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: translate_sql

      Translates a SQL statement using the session's SQL translation profile.

    Parameters:
      sql_text        - SQL statement
      translated_text - translated SQL statement

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>
    - <no_translation_found>

    Examples:
    | declare
    |   translated_text CLOB;
    | begin
    |   dbms_sql_translator.translate_sql(
    |       sql_text        => 'select top 5 * from emp',
    |       translated_text => translated_text);
    | end;
  */
  procedure translate_sql(sql_text        in         clob,
                          translated_text out nocopy clob);

  /*----------------------------------------------------------------------
    Procedure: translate_error

      Translates an Oracle error code and an ANSI SQLSTATE using the session's
      SQL translation profile.

    Parameters:
      error_code          - Oracle error code
      translated_code     - translated error code
      translated_sqlstate - translated SQLSTATE

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>
    - <no_translation_found>

    Examples:
    | 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;
  */
  procedure translate_error(error_code          in         pls_integer,
                            translated_code     out        pls_integer,
                            translated_sqlstate out nocopy varchar2);

  /*----------------------------------------------------------------------
    Procedure: sql_id

      Computes the SQL identifier of a SQL statement in the session's SQL
      translation profile.
      
    Parameters:
      sql_text        - SQL statement

    Returns:
      The SQL ID of the SQL statement in the session's SQL translation profile.

    Exceptions:
    - <bad_argument>

    Examples:
    | declare
    |   sqltext clob;
    |   sqlid   varchar2(13);
    | begin
    |   sqltext := 'select top 1 * from emp';
    |   sqlid   := dbms_sql_translator.sql_id(sqltext);
    | end;
  */
  function sql_id(sql_text in clob) return varchar2 deterministic;

  /*----------------------------------------------------------------------
    Procedure: sql_hash

      Computes the hash value of a SQL statement in the session's SQL
      translation profile. It may be used to speed up the lookup of a SQL
      translation in SQL translation views.
      
    Parameters:
      sql_text        - SQL statement

    Returns:
      The hash value of the SQL statement in the session's SQL translation
      profile.

    Exceptions:
    - <bad_argument>

    Examples:
    | 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;
  */
  function sql_hash(sql_text in clob) return number deterministic;

  /*----------------------------------------------------------------------
    Procedure: set_sql_translation_module

      Sets the module and action on a custom translation of a SQL statement in
      a SQL translation profile.

    Parameters:
      profile_name - profile name
      sql_text     - SQL statement
      module       - module
      action       - action

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.set_sql_translation_module(
    |       profile_name => 'tsql_application',
    |       sql_text     => 'select top 5 * from emp',
    |       module       => 'employee report',
    |       action       => 'top 5 employees query');
    | end;
  */
  procedure set_sql_translation_module(profile_name in varchar2,
                                       sql_text     in clob,
                                       module       in varchar2,
                                       action       in varchar2);
  PRAGMA SUPPLEMENTAL_LOG_DATA(set_sql_translation_module, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: set_sql_translation_comment

      Sets the comment on a custom translation of a SQL statement in a SQL
      translation profile.

    Parameters:
      profile_name - profile name
      sql_text     - SQL statement
      comment      - comment

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.set_sql_translation_comment(
    |       profile_name => 'tsql_application',
    |       sql_text     => 'select top 5 * from emp',
    |       comment      => 'the translation has been reviewed');
    | end;
  */
  procedure set_sql_translation_comment(profile_name in varchar2,
                                        sql_text     in clob,
                                        comment      in varchar2);
  PRAGMA SUPPLEMENTAL_LOG_DATA(set_sql_translation_comment, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: set_error_translation_comment

      Sets the comment on a custom translation of an Oracle error code in a SQL
      translation profile.

    Parameters:
      profile_name - profile name
      error_code   - Oracle error code
      comment      - comment

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.set_error_translation_comment(
    |       profile_name => 'tsql_application',
    |       error_code   => 1,
    |       comment      => 'the translation has been reviewed');
    | end;
  */
  procedure set_error_translation_comment(profile_name in varchar2,
                                          error_code   in pls_integer,
                                          comment      in varchar2);
  PRAGMA SUPPLEMENTAL_LOG_DATA(set_error_translation_comment, AUTO_WITH_COMMIT);

  /*----------------------------------------------------------------------
    Procedure: set_dictionary_sql_id

      Sets the SQL identifier of the SQL text in translation dictionary used to
      translate the current SQL statement.

    Parameters:
      dictionary_sql_id - SQL identifier of the SQL text in translation
                          dictionary

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>

    Examples:
    | begin
    |   dbms_sql_translator.set_dictionary_sql_id('cprtcknftr8wf');
    | end;
  */
  procedure set_dictionary_sql_id(dictionary_sql_id in varchar2);

  /*----------------------------------------------------------------------
    Procedure: clear_sql_translation_error

      Clears the last error when the SQL was run.

    Parameters:
      profile_name    - profile name
      sql_text        - SQL statement

    Exceptions:
    - <bad_argument>
    - <insufficient_privilege>
    - <no_such_user>
    - <no_such_profile>

    Examples:
    | begin
    |   dbms_sql_translator.clear_sql_translation_error(
    |       profile_name => 'tsql_application',
    |       sql_text     => 'select top 5 * from emp');
    | end;
  */
  procedure clear_sql_translation_error(profile_name in varchar2,
                                        sql_text     in clob);
  PRAGMA SUPPLEMENTAL_LOG_DATA(clear_sql_translation_error, AUTO_WITH_COMMIT);

end;
/

create or replace public synonym dbms_sql_translator
for sys.dbms_sql_translator
/
grant execute on dbms_sql_translator to public
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO