Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
Purpose
A SQL translation profile is an editionable database schema object that resides in SQL translation profile namespace.
A SQL translation profile cannot be created as a common object in a consolidated database.
AUTHID
CURRENT_USER
Constants
Name
Data Type
Value
ATTR_EDITIONABLE
VARCHAR2(30)
'EDITIONABLE'
ATTR_FOREIGN_SQL_SYNTAX
VARCHAR2(30)
'FOREIGN_SQL_SYNTAX'
ATTR_LOG_ERRORS
VARCHAR2(30)
'LOG_ERRORS'
ATTR_LOG_TRANSLATION_ERROR
VARCHAR2(30)
'LOG_TRANSLATION_ERROR'
ATTR_RAISE_TRANSLATION_ERROR
VARCHAR2(30)
'RAISE_TRANSLATION_ERROR'
ATTR_TRACE_TRANSLATION
VARCHAR2(30)
'TRACE_TRANSLATOR'
ATTR_TRANSLATE_NEW_SQL
VARCHAR2(30)
'TRANSLATE_NEW_SQL'
ATTR_TRANSLATOR
VARCHAR2(30)
'TRANSLATOR'
ATTR_VALUE_TRUE
VARCHAR2(30)
'TRUE'
ATTR_VALUE_FALSE
VARCHAR2(30)
'FALSE'
Dependencies
ALL_ERROR_TRANSLATIONS
DBMS_SQL_TRANSLATOR_EXPORT
SQLTXL$
ALL_OBJECTS
DBMS_SQL_TRANSLATOR_LIB
SYS_IXMLAGG
ALL_SQL_TRANSLATIONS
DBMS_STANDARD
XMLTYPE
ALL_SQL_TRANSLATION_PROFILES
DUAL
XQSEQUENCE
Documented
Yes
Exceptions
Error Code
Reason
ORA-00955
profile_exists
ORA-01031
insufficient_privilege
ORA-01435
no_such_user
ORA-24252
no_such_profile
ORA-24253
no_translation_found
ORA-29261
bad_argument
First Available
12.1
Security Model
Owned by SYS with EXECUTE granted to PUBLIC
Another example we are calling out where a grant of EXECUTE to PUBLIC is unwarranted. A decision to translate or more correctly replace one SQL statement with another should be granted to an application ... not to everyone and anyone that can has the CREATE SESSION privilege.
col profile_name format a20
col translator format a11
SELECT *
FROM dba_sql_translation_profiles;
CREATE OR REPLACE PACKAGE uwclass.transpkg AUTHID CURRENT_USER IS
PROCEDURE translate_sql(sql_text IN CLOB,
translated_text OUT NOCOPY CLOB);
PROCEDURE translate_error(error_code IN BINARY_INTEGER,
translated_code OUT BINARY_INTEGER,
translated_sqlstate OUT NOCOPY VARCHAR2);
END transpkg;
/
Deregisters the translation of an Oracle error code and SQLSTATE in a SQL translation profile
dbms_sql_translator.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);
BEGIN
dbms_sql_translator.deregister_error_translation(profile_name => UW_SQLTRANS', error_code => 1);
END;
/
Registers a custom translation of an Oracle error code and SQLSTATE in a SQL translation profile
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);
Registers a custom translation of a SQL statement in a SQL translation profile
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);