Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Determining the size (length) of LONG
Ok, here is a sample code for function "long_length". This function must be call by another PL/SQL describe bottom...
CREATE OR REPLACE FUNCTION long_length(cTabName varchar2, cColName
varchar2, cRowid varchar2)
RETURN NUMBER
IS
cur_id integer; buff varchar2(32767); len integer; offset integer; v_length integer; stmt varchar2(500); ret integer; BEGIN stmt := ' SELECT '|| cColName || ' FROM ' || cTabName || ' WHERE rowid = '||''''||cRowid||''''; cur_id := dbms_sql.open_cursor; dbms_sql.parse(cur_id, stmt, dbms_sql.NATIVE); dbms_sql.define_column_long(cur_id, 1); ret := dbms_sql.execute(cur_id); IF (dbms_sql.fetch_rows(cur_id) > 0 ) THEN offset := 1; len := 0; LOOP dbms_sql.column_value_long(cur_id, 1,32767, offset, buff, v_length); len := len + v_length; EXIT WHEN v_length < 32767; offset := offset + v_length; END LOOP; END IF; dbms_sql.close_cursor(cur_id); return( len );
rem You can use the below given sample PL/SQL block with the
rem above function to retrieve the lengths of long column:
rem
rem NOTE : Do not forget to replace the TABLE_NAME, LONG_COLUMN_NAME
rem with your own table and long column names respectively.
rem
rem Before running the following block from SQL*PLUS, set the server
rem output to some big buffer so that the dbms_output package can work
rem properly.
set serveroutput on size 100000;
DECLARE
len number;
cRowid varchar2(30);
num number;
cursor T_CURSOR is
SELECT rowid FROM YOUR_TABLE;
NetComrade wrote:
> Hi,
>
> Well length() doesn't work... any other ways?
> ---------------
> Andrey Dmitriev eFax: (978) 383-5892 Daytime: (917) 373-5417
> AOL: NetComrade ICQ: 11340726 remove NSPAM to email
--
Salutations!
\\\|||/// / ^ ^ \ ( 0 0 )
![]() |
![]() |