내용 목차
본 장에서는 DBMS_SQL_TRANSLATOR 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다.
DBMS_SQL_TRANSLATOR 패키지를 이용해 SQL 번역 프로파일을 생성하고 이용할 수가 있다. DBMS_SQL_TRANSLATOR 패키지는 호출자 권한으로 수행되는 패키지이다. 그러므로 호출자가 이 패키지의 함수를 통해 번역기 패키지 함수를 호출할 경우, 호출자는 번역기 패키지에 대해 EXECUTE 권한을 가지고 있어야 한다.
번역기 패키지는 다음의 2개의 프러시저를 가지고 있는 PSM 패키지여야 한다.
PROCEDURE TRANSLATE_SQL ( sql_text IN CLOB, translated_text OUT CLOB ); PROCEDURE TRANSLATE_ERROR ( error_code IN PLS_INTEGER, translated_code OUT PLS_INTEGER, translated_sqlstate OUT VARCHAR2 );
번역기 패키지 함수의 각 인자에 대한 설명은 다음과 같다.
필드 이름 | 설명 |
---|---|
sql_text | 번역할 SQL 문이다. |
translated_text | 번역된 SQL 문이다. |
error_code | 번역할 Tibero 에러 코드이다. |
translated_code | 번역된 에러 코드이다. |
translated_sqlstate | 번역된 SQLSTATE 이다. |
다음은 DBMS_SQL_TRANSLATOR 패키지 내에 정의된 상수이다. 이 상수들은 SQL 번역 프로파일의 속성을 지정할 때 이용한다.
ATTR_TRANSLATOR
번역기 패키지를 설정할 때 사용한다. 패키지는 '[스키마.]패키지_이름' 형식으로 설정할 수 있다. 디폴트로 이 속성은 지정되어 있지 않다.
ATTR_TRANSLATOR CONSTANT VARCHAR2(30) := 'TRANSLATOR'
ATTR_TRANSLATE_NEW_SQL
번역기 패키지를 사용해 새로운 SQL 문 (혹은 에러 코드) 을 번역할지를 결정한다. (기본값: TRUE)
설정값 | 설명 |
---|---|
TRUE | 맞춤 번역이 등록되어 있지 않은 새로운 SQL문 (혹은 에러 코드) 을 번역기 패키지를 사용해 번역하고, 번역 결과를 맞춤 번역으로 등록한다. 맞춤 번역은 translator에 의해 자동으로 번역되거나, register_sql_translation 등의 함수를 통해서 사용자가 직접 등록할 수 있다. |
FALSE | 맞춤 번역이 등록되어 있지 않으면 (디폴트로) 에러를 발생시킨다. |
ATTR_TRANSLATE_NEW_SQL CONSTANT VARCHAR2(30) := 'TRANSLATE_NEW_SQL'
ATTR_RAISE_TRANSLATION_ERROR
맞춤 번역이 존재하지 않을 때 (그리고 번역기 패키지를 사용할 수 없을 때) 에러를 발생시킬지에 대한 여부를 결정한다. 디폴트로 이 속성은 거짓이다.
ATTR_RAISE_TRANSLATION_ERROR CONSTANT VARCHAR2(30) := 'RAISE_TRANSLATION_ERROR'
ATTR_VALUE_TRUE
속성에 참을 설정하려면 이 상수를 사용할 수 있다.
ATTR_VALUE_TRUE CONSTANT VARCHAR2(30) := 'TRUE'
ATTR_VALUE_FALSE
속성에 거짓을 설정하려면 이 상수를 사용할 수 있다.
ATTR_VALUE_FALSE CONSTANT VARCHAR2(30) := 'FALSE'
본 절에서는 DBMS_SQL_TRANSLATOR 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명한다.
SQL 번역 프로파일을 생성한다. SQL 번역 프로파일은 별도의 네임스페이스를 가지는 스키마 객체이다.
CREATE_PROFILE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.CREATE_PROFILE ( profile_name IN VARCHAR );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 생성할 프로파일의 이름이다. '[스키마.]이름' 형식으로 설정이 가능하다. |
해당 에러 코드의 맞춤 번역 등록 내용을 제거한다.
DEREGISTER_ERROR_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.DEREGISTER_ERROR_TRANSLATION ( profile_name IN VARCHAR, error_code IN PLS_INTEGER );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
error_code | 등록을 제거할 에러 코드이다. |
해당 SQL 문의 맞춤 번역 등록 내용을 제거한다.
DEREGISTER_SQL_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.DEREGISTER_SQL_TRANSLATION ( profile_name IN VARCHAR, sql_text IN CLOB );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
sql_text | 등록을 제거할 SQL 문이다. |
SQL 번역 프로파일을 제거한다.
DROP_PROFILE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.DROP_PROFILE ( profile_name IN VARCHAR );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 제거할 프로파일의 이름이다. |
기 등록된 에러 코드의 맞춤 번역을 활성화한다(번역기에서 번역하는 경우에 사용할 수 있도록 한다).
ENABLE_ERROR_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.ENABLE_ERROR_TRANSLATION ( profile_name IN VARCHAR, error_code IN PLS_INTEGER, enable IN BOOLEAN DEFAULT TRUE );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
error_code | 에러 코드이다. |
enable | 활성화시킬지 혹은 비활성화시킬지를 설정한다. |
기 등록된 SQL 문의 맞춤 번역을 활성화한다(번역기에서 번역하는 경우에 사용할 수 있도록 한다).
ENABLE_SQL_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.ENABLE_SQL_TRANSLATION ( profile_name IN VARCHAR, sql_text IN CLOB, enable IN BOOLEAN DEFAULT TRUE );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
sql_text | SQL 문이다. |
enable | 활성화시킬지 혹은 비활성화시킬지를 설정한다. |
해당 에러 코드에 대한 맞춤 번역을 등록한다. 번역 프로파일을 통해 에러 코드를 번역할 때, 먼저 해당 에러 코드에 대한 맞춤 번역이 등록되어 있는지를 검사해서, 있으면 해당 번역 내용을 돌려주고 그렇지 않을 경우는 번역기 패키지의 함수를 수행하게 된다.
해당 에러 코드에 대한 맞춤 번역이 이미 등록되어 있을 경우는 새로 인자로 전달되는 내용으로 번역 내용이 업데이트된다.
REGISTER_ERROR_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.REGISTER_ERROR_TRANSLATION ( profile_name IN VARCHAR, error_code IN PLS_INTEGER, translated_code IN PLS_INTEGER DEFAULT NULL, translated_sqlstate IN VARCHAR DEFAULT NULL, enable IN BOOLEAN DEFAULT TRUE );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
error_code | 번역할 Tibero 에러 코드이다. |
translated_code | 번역된 에러 코드이다. |
translated_sqlstate | 번역된 SQLSTATE 이다. |
enable | 활성화시킬지 혹은 비활성화시킬지를 설정한다. |
해당 SQL 문에 대한 맞춤 번역을 등록한다.번역 프로파일을 통해 SQL 문을 번역할 때, 먼저 해당 SQL 문에 대한 맞춤 번역이 등록되어 있는지를 검사해서, 있으면 해당 번역 내용을 돌려주고 그렇지 않을 경우는 번역기 패키지의 함수를 수행하게 된다.
해당 SQL 문에 대한 맞춤 번역이 이미 등록되어 있을 경우는 새로 인자로 전달되는 내용으로 번역 내용이 업데이트된다.
REGISTER_SQL_TRANSLATION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION ( profile_name IN VARCHAR, sql_text IN CLOB, translated_text IN CLOB DEFAULT NULL, enable IN BOOLEAN DEFAULT TRUE );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
sql_text | 번역할 SQL 문이다. |
translated_text | 번역된 SQL 문이다. |
enable | 활성화시킬지 혹은 비활성화시킬지를 설정한다. |
SQL 번역 프로파일의 속성값을 지정한다.
SET_ATTRIBUTE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE ( profile_name IN VARCHAR, attribute_name IN VARCHAR, attribute_value IN VARCHAR );
파라미터
파라미터 | 설명 |
---|---|
profile_name | 프로파일의 이름이다. |
attribute_name | 설정할 속성의 이름이다. |
attribute_value | 설정할 속성값이다. |
인자로 주어진 SQL 문의 해시값을 계산한다.
프로토타입
DBMS_SQL_TRANSLATOR.SQL_HASH ( sql_text IN CLOB ) RETURN NUMBER DETERMINISTIC;
파라미터
파라미터 | 설명 |
---|---|
sql_text | 해시값을 계산할 SQL 문이다. |
인자로 주어진 SQL 문의 SQL_ID 값을 반환한다.
프로토타입
DBMS_SQL_TRANSLATOR.SQL_ID ( sql_text IN CLOB ) RETURN VARCHAR DETERMINISTIC;
파라미터
파라미터 | 설명 |
---|---|
sql_text | SQL_ID 를 구할 SQL 문이다. |
해당 에러 코드를 번역한다. 사용할 SQL 번역 프로파일은 ALTER SESSION SET SQL_TRANSLATION_PROFILE 명령을 통해 프러시저를 수행하기에 앞서 미리 지정되어야만 한다.
TRANSLATE_ERROR 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SQL_TRANSLATOR.TRANSLATE_ERROR ( error_code IN PLS_INTEGER, translated_code OUT PLS_INTEGER, translated_sqlstate OUT NOCOPY VARCHAR );
파라미터
파라미터 | 설명 |
---|---|
error_code | 번역할 Tibero 에러 코드이다. |
translated_code | 번역된 에러 코드이다. |
translated_sqlstate | 번역된 SQLSTATE 이다. |