표현 변환 규칙
표현 변환 규칙#
RULE-40001#
타입#
CONVERTED
설명#
내장 패키지가 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1 AS
BEGIN
DBMS_OUTPUT.PUT('Hello');
DBMS_OUTPUT.PUT_LINE('world!');
END;
변환된 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1 AS
BEGIN
SYSTEM_.PRINT('Hello');
SYSTEM_.PRINTLN('world!');
END;
RULE-40002#
이 규칙은 Altibase 6.3.1 이상 버전에 적용된다.
타입#
TODO
설명#
내장 패키지가 Altibase에 설치되었는지 확인하여야 한다.
원본 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1 AS
BEGIN
DBMS_OUTPUT.NEW_LINE;
END;
변환된 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1 AS
BEGIN
DBMS_OUTPUT.NEW_LINE /* [TODO] RULE-40002 : Confirm the target built-in package is installed at Altibase */;
END;
RULE-40003#
타입#
TODO
설명#
내장 패키지는 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1(p_file FILE_TYPE) AS
BEGIN
UTL_FILE.PUTF(p_file, 'Hello %s!', 'world');
END;
변환된 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1(p_file FILE_TYPE) AS
BEGIN
UTL_FILE.PUTF(p_file, 'Hello %s!', 'world') /* [TODO] RULE-40003 : The target built-in package must be converted manually */;
END;
RULE-40004#
타입#
CONVERTED
설명#
해당 SQL 함수가 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT UID FROM dual;
변환된 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT USER_ID() FROM dual;
RULE-40005#
타입#
TODO
설명#
지원하지 않는 함수이다.
원본 SQL 문장#
CREATE OR REPLACE FUNCTION func1(p1 VARCHAR2)
RETURN NUMBER AS
v1 NUMBER := LENGTHC(p1);
BEGIN
RETURN v1;
END;
변환된 SQL 문장#
CREATE OR REPLACE FUNCTION func1(p1 VARCHAR2)
RETURN NUMBER AS
v1 NUMBER := LENGTHC(p1) /* [TODO] RULE-40005 : Unsupported function */;
BEGIN
RETURN v1;
END;
RULE-40006#
타입#
CONVERTED
설명#
TRIM 함수의 인자들이 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE VIEW stats AS
SELECT TRIM(LEADING 0 FROM total_stats)
FROM test_result WHERE date = SYSDATE;
변환된 SQL 문장#
CREATE OR REPLACE VIEW stats AS
SELECT LTRIM(total_stats, 0)
FROM test_result WHERE date = SYSDATE;
RULE-40007#
타입#
CONVERTED
설명#
BIN_TO_NUM 함수의 인자들이 '||'로 연결되어 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE VIEW status_view AS
SELECT BIN_TO_NUM(cp_plan, hp_plan, tv_plan, net_plan) status
FROM service_tbl WHERE ym = TO_CHAR(SYSDATE, 'YYYYMM');
변환된 SQL 문장#
CREATE OR REPLACE VIEW status_view AS
SELECT BIN_TO_NUM(cp_plan || hp_plan || tv_plan || net_plan) status
FROM service_tbl WHERE ym = TO_CHAR(SYSDATE, 'YYYYMM');
RULE-40008#
타입#
TODO
설명#
인자로 부질의를 갖는 CAST 함수는 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT c1, CAST(MULTISET(SELECT c1 FROM t2 ORDER BY c2) AS tmp_tbl)
FROM t1 ORDER BY c1;
변환된 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT c1, CAST(MULTISET(SELECT c1 FROM t2 ORDER BY c2) AS tmp_tbl) /* [TODO] RULE-40008 : The CAST function containing a subquery as an argument should be manually converted */
FROM t1 ORDER BY c1;
RULE-40009#
타입#
TODO
설명#
복수의 인자를 갖는 DUMP 함수는 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT DUMP(c3, 8, 3, 2)
FROM t1 WHERE c3 = 100 ORDER BY c2;
변환된 SQL 문장#
CREATE OR REPLACE VIEW v1 AS
SELECT DUMP(c3, 8, 3, 2) /* [TODO] RULE-40009 : The DUMP function contains multiple arguments should be manually converted */
FROM t1 WHERE c3 = 100 ORDER BY c2;
RULE-40010#
타입#
CONVERTED
설명#
EXTRACT 함수가 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE VIEW rsvStats_year AS
SELECT EXTRACT(YEAR FROM rsv_date) year, COUNT(*) cnt
FROM rsv_table GROUP BY EXTRACT(YEAR FROM rsv_date);
변환된 SQL 문장#
CREATE OR REPLACE VIEW rsvStats_year AS
SELECT EXTRACT(rsv_date, 'YEAR') year, COUNT(*) cnt
FROM rsv_table GROUP BY EXTRACT(rsv_date, 'YEAR');
RULE-40011#
타입#
TODO
설명#
EXTRACT 함수에서 datetime이 'TIMEZONE'으로 시작하는 경우 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT EXTRACT(TIMEZONE_REGION FROM CURRENT_TIMESTAMP) FROM dual;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT EXTRACT(TIMEZONE_REGION /* [TODO] RULE-40011 : The datetime field prefixed 'TIMEZONE' in the EXTRACT function should be manually converted */ FROM CURRENT_TIMESTAMP) FROM dual;
RULE-40012#
타입#
TODO
설명#
XMLType 인스턴스를 인자로 가지는 EXTRACT 함수는 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT EXTRACT(emp_into, 'Employee/Name') emp_name FROM dual;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT EXTRACT(emp_info, 'Employee/Name') /* [TODO] RULE-40012 : The EXTRACT function containing XMLType instance as parameters should be manually converted */ emp_name FROM dual;
RULE-40013#
타입#
CONVERTED
설명#
SYS_CONTEXT 함수가 변환되었다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM dual;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT USER_NAME() FROM dual;
RULE-40014#
타입#
TODO
설명#
CURRENT_TIMESTAMP 함수의 선택적 인자인 정밀도는 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT CURRENT_TIMESTAMP(0) FROM dual;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT CURRENT_TIMESTAMP(0) /* [TODO] RULE-40014 : The optional argument of the function CURRENT_TIMESTAMP, precision must be converted manually */ FROM dual;
RULE-40015#
타입#
TODO
설명#
언어를 지정하는 선택적 인자인 nlsparam은 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT TO_CHAR(SYSDATE, 'DL', 'NLS_DATE_LANGUAGE = korean') FROM dual;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT TO_CHAR(SYSDATE, 'DL', 'NLS_DATE_LANGUAGE = korean' /* [TODO] RULE-40015 : The optional argument, nlsparam must be converted manually */) FROM dual;
RULE-40016#
타입#
TODO
설명#
함수 동작에 변화를 줄 수 있는 선택적 인자인 match_param은 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT REGEXP_SUBSTR(content, '(Name: )(([a-z]+) ([a-z]+))', 1, 1, 'i', 3) "First Name" FROM page_pi;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT REGEXP_SUBSTR(content, '(Name: )(([a-z]+) ([a-z]+))', 1, 1, 'i' /* [TODO] RULE-40016 : The optional argument, match_param must be converted manually */, 3) "First Name" FROM page_pi;
RULE-40017#
이 규칙은 Altibase 6.3.1 이상 버전에 적용된다.
타입#
TODO
설명#
선택적 인자인 subexpr은 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW view1 AS
SELECT REGEXP_SUBSTR(content, '(Name: )(([a-z]+) ([a-z]+))', 1, 1, 'i', 4) "Family Name" FROM page_pi;
변환된 SQL 문장#
CREATE VIEW view1 AS
SELECT REGEXP_SUBSTR(content, '(Name: )(([a-z]+) ([a-z]+))', 1, 1, 'i', 4 /* [TODO] RULE-40017 : The optional argument, subexpr must be converted manually */) "Family Name" FROM page_pi;
RULE-40018#
타입#
CONVERTED
설명#
MOD 연산자가 함수 형태로 변환되었다.
원본 SQL 문장#
CREATE FUNCTION func1(p1 PLS_INTEGER) RETURN PLS_INTEGER AS
v1 PLS_INTEGER := p1 MOD 2;
BEGIN
RETURN v1;
END;
변환된 SQL 문장#
CREATE FUNCTION func1(p1 PLS_INTEGER) RETURN PLS_INTEGER AS
v1 PLS_INTEGER := MOD(p1, 2);
BEGIN
RETURN v1;
END;
RULE-40019#
타입#
CONVERTED
설명#
내장 패키지가 변환되었다.
원본 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV, FWEEK_PSCAT_SALES_MV', 'CF', '', TRUE, FALSE, 0,0,0, FALSE, FALSE);
END;
변환된 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
REFRESH_MATERIALIZED_VIEW(USER_NAME(), 'CAL_MONTH_SALES_MV');
REFRESH_MATERIALIZED_VIEW(USER_NAME(), 'FWEEK_PSCAT_SALES_MV');
END;
RULE-40020#
타입#
CONVERTED
설명#
WM_CONCAT 함수가 LISTAGG 함수로 변환되었다.
원본 SQL 문장#
SELECT WM_CONCAT(val) FROM t1;
변환된 SQL 문장#
SELECT LISTAGG(val, ',') WITHIN GROUP(ORDER BY val) FROM t1;
RULE-40021#
타입#
TODO
설명#
SYS_CONTEXT 함수의 파라미터를 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE VIEW v_r40021 AS
SELECT SYS_CONTEXT('USERENV', 'INSTANCE_NAME') FROM dual;
변환된 SQL 문장#
CREATE VIEW v_r40021 AS
SELECT SYS_CONTEXT('USERENV', 'INSTANCE_NAME') /* [TODO] RULE-40021 : The parameter in the function 'SYS_CONTEXT' should be converted manually.*/ FROM dual;
RULE-40022#
타입#
CONVERTED
설명#
반환하는 값의 길이를 나타내는 SYS_CONTEXT 함수의 세번째 인자가 SYS_CONTEXT를 둘러싼 SUBSTR 함수로 변환되었다.
원본 SQL 문장#
CREATE VIEW v_r40022 AS SELECT SYS_CONTEXT('USERENV', 'INSTANCE_NAME', 100) FROM dual;
변환된 SQL 문장#
CREATE VIEW v_r40022 AS SELECT SUBSTR(SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), 0, 100) FROM dual;
RULE-40023#
타입#
TODO
설명#
SQLERRM(error_code)는 지원하지 않는 함수로 수동으로 변환해야 한다.
원본 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
FOR curosor1 IN (SELECT c1, c2 FROM t1)
LOOP
UPDATE t2 SET c2 = curosor1 .c2 WHERE c1 = curosor1 .c1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('SQL ERROR CODE:' || SQLCODE);
DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE:' || SQLERRM);
DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE));
END;
변환된 SQL 문장#
CREATE OR REPLACE PROCEDURE proc1
AS
BEGIN
FOR curosor1 IN (SELECT c1, c2 FROM t1)
LOOP
UPDATE t2 SET c2 = curosor1 .c2 WHERE c1 = curosor1 .c1;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('SQL ERROR CODE:' || SQLCODE);
DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE:' || SQLERRM);
DBMS_OUTPUT.PUT_LINE(SQLERRM(SQLCODE) /* [TODO] RULE-40023 : The SQLERRM(error_code) function should be manually converted */);
END;