일반적으로 long 타입을 변경 할때 안되면 아래와 같이 함수로 처리하자
좀 예전 방식이라 11g 에서 지원하는 다른 함수가 있는지는 모르겟다
Posted by 정희락 hrjeong 님 사이트 참조 하엿다
http://hrjeong.tistory.com/46
CREATE OR REPLACE FUNCTION f2 (
i_owner IN VARCHAR2,
i_table_name IN VARCHAR2,
i_column_name IN VARCHAR2,
i_rowid IN ROWID,
i_offset IN NUMBER DEFAULT 0
)
RETURN VARCHAR2
AS
l_sql VARCHAR2 (32767);
l_c INTEGER DEFAULT DBMS_SQL.open_cursor;
l_r NUMBER;
l_value VARCHAR2 (32767);
l_value_length NUMBER;
BEGIN
l_sql := q'[SELECT %COLUMN_NAME% FROM %OWNER%.%TABLE_NAME% WHERE ROWID = :p1]';
l_sql := REPLACE (l_sql, '%OWNER%', i_owner);
l_sql := REPLACE (l_sql, '%TABLE_NAME%', i_table_name);
l_sql := REPLACE (l_sql, '%COLUMN_NAME%', i_column_name);
DBMS_SQL.parse (l_c, l_sql, DBMS_SQL.native);
DBMS_SQL.bind_variable (l_c, ':p1', i_rowid);
DBMS_SQL.define_column_long (l_c, 1);
l_r := DBMS_SQL.EXECUTE (l_c);
IF (DBMS_SQL.fetch_rows (l_c) > 0)
THEN
DBMS_SQL.column_value_long (l_c, 1, 4000, i_offset, l_value, l_value_length);
END IF;
DBMS_SQL.close_cursor (l_c);
RETURN l_value;
END f2;
함수 만들고
사용은
SELECT f2 ('SCOTT', 'T1', 'C1', ROWID) AS c1
FROM t1 a;
요렇게
'oracle 설정' 카테고리의 다른 글
오라클 tablespace 생성 삭제 조회 관련 (0) | 2016.02.24 |
---|---|
오라클 현재 인스턴스 및 설정 파라미터 화인 (0) | 2016.02.23 |
타 계정 table 조회 권한 (0) | 2016.01.12 |
user 생성 삭세 (0) | 2016.01.11 |
sqlplus sysdba 접속 (0) | 2016.01.11 |