ORACLE PL/SQL LONG TO VARCHAR2
Вот способ который я нашел в интернете, скорее всего он старый (для 8 оракла я такое уже видел), но делать нечего.
Перевод в LONG:
CREATE OR REPLACE Function convert_long_to_char( pTableName in varchar2,
pColumnName in varchar2,
pRowId in rowid ) return varchar2 As
vCursor integer default dbms_sql.open_cursor;
vN number;
vLongVal varchar2(4000);
vLongLen number;
vBuflen number := 4000;
vCurPos number := 0;
begin
dbms_sql.parse( vCursor,'select ' || pColumnName || ' from ' || pTableName ||
' where rowid = :x',
dbms_sql.native );
dbms_sql.bind_variable( vCursor, ':x', pRowId );
dbms_sql.define_column_long(vCursor, 1);
vN := dbms_sql.execute(vCursor);
if (dbms_sql.fetch_rows(vCursor)>0) then
dbms_sql.column_value_long(vCursor, 1, vBuflen, vCurpos ,
vLongVal, vLongLen );
end if;
dbms_sql.close_cursor(vCursor);
return vLongVal;
end convert_long_to_char;
/
Собственно насильно режется лонг до 4000 символов.
Комментариев нет:
Отправить комментарий