DROP TABLE temp_unicode_table
ORA-00942: table or view does not existMore Details: https://docs.oracle.com/error-help/db/ora-00942
CREATE TABLE temp_unicode_table (
id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
ts VARCHAR2(10 CHAR),
tx VARCHAR2(30 CHAR)
)
Table created.
TRUNCATE TABLE temp_unicode_table
Table truncated.
INSERT INTO temp_unicode_table (ts, tx) VALUES ('1', '=Σ=')
1 row(s) inserted.
INSERT INTO temp_unicode_table (ts, tx) VALUES ('1', UTL_RAW.CAST_TO_VARCHAR2('F09F988A'))
1 row(s) inserted.
COMMIT
Statement processed.
CREATE OR REPLACE
FUNCTION temp_test_dbms_lob_error(text IN VARCHAR2) RETURN VARCHAR2 IS
c CLOB;
t VARCHAR2(32767);
BEGIN
dbms_lob.createtemporary(lob_loc=>c, cache=>TRUE);
dbms_lob.writeappend(lob_loc=>c, amount=>LENGTH(text), buffer=>text);
t := dbms_lob.substr(lob_loc=>c);
dbms_lob.freetemporary(lob_loc=>c);
RETURN t;
EXCEPTION
WHEN OTHERS THEN
IF (dbms_lob.istemporary(lob_loc=>c) = 1) THEN
dbms_lob.freetemporary(lob_loc=>c);
END IF;
RETURN dbms_utility.format_error_backtrace();
END;
Function created.
CREATE OR REPLACE
FUNCTION temp_test_dbms_lob_success(text IN VARCHAR2) RETURN VARCHAR2 IS
c CLOB;
t VARCHAR2(32767);
BEGIN
dbms_lob.createtemporary(lob_loc=>c, cache=>TRUE);
dbms_lob.writeappend(lob_loc=>c, amount=>dbms_lob.getlength(text), buffer=>text);
t := dbms_lob.substr(lob_loc=>c);
dbms_lob.freetemporary(lob_loc=>c);
RETURN t;
EXCEPTION
WHEN OTHERS THEN
IF (dbms_lob.istemporary(lob_loc=>c) = 1) THEN
dbms_lob.freetemporary(lob_loc=>c);
END IF;
RETURN dbms_utility.format_error_backtrace();
END;
Function created.
SELECT
'temp_test_dbms_lob_error',
id,
ts,
tx,
LENGTHB(tx) "original_length_byte",
temp_test_dbms_lob_error(tx) "converted_text",
LENGTHB(temp_test_dbms_lob_error(tx)) "converted_length_byte",
CASE WHEN tx = temp_test_dbms_lob_error(tx) THEN 'SUCCESS' ELSE 'ERROR' END "status"
FROM temp_unicode_table
| 'TEMP_TEST_DBMS_LOB_ERROR' | ID | TS | TX | original_length_byte | converted_text | converted_length_byte | status | temp_test_dbms_lob_error | 1 | 1 | =Σ= | 4 | =Σ= | 4 | SUCCESS | temp_test_dbms_lob_error | 2 | 1 | 😊 | 4 | ORA-06512: at "SYS.DBMS_LOB", line 1163 ORA-06512: at "SQL_STSBYGTRULZBXKQXOTFSGNSSQ.TEMP_TEST_DBMS_LOB_ERROR", line 6 | 119 | ERROR |
|---|
SELECT
'temp_test_dbms_lob_success',
id,
ts,
tx,
LENGTHB(tx) "original_length_byte",
temp_test_dbms_lob_success(tx) "converted_text",
LENGTHB(temp_test_dbms_lob_success(tx)) "converted_length_byte",
CASE WHEN tx = temp_test_dbms_lob_success(tx) THEN 'SUCCESS' ELSE 'ERROR' END "status"
FROM temp_unicode_table
| 'TEMP_TEST_DBMS_LOB_SUCCESS' | ID | TS | TX | original_length_byte | converted_text | converted_length_byte | status | temp_test_dbms_lob_success | 1 | 1 | =Σ= | 4 | =Σ= | 4 | SUCCESS | temp_test_dbms_lob_success | 2 | 1 | 😊 | 4 | 😊 | 4 | SUCCESS | 2 rows selected.
|---|