1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| PROCEDURE setlongbeitext (p_query VARCHAR2, beinr VARCHAR2)
IS
l_cursor INTEGER DEFAULT DBMS_SQL.open_cursor;
l_n NUMBER;
l_long_val VARCHAR2 (250);
l_long_len NUMBER;
l_buflen NUMBER := 250;
l_curpos NUMBER := 0;
RESULT LONG;
BEGIN
DBMS_SQL.parse (l_cursor, p_query, DBMS_SQL.native);
--dbms_sql.bind_variable( l_cursor, p_name, p_value );
DBMS_SQL.define_column_long (l_cursor, 1);
l_n := DBMS_SQL.EXECUTE (l_cursor);
IF (DBMS_SQL.fetch_rows (l_cursor) > 0)
THEN
LOOP
DBMS_SQL.column_value_long (l_cursor,
1,
l_buflen,
l_curpos,
l_long_val,
l_long_len
);
l_curpos := l_curpos + l_long_len;
IF l_curpos + l_buflen > 32999
THEN
l_buflen := 32999 - l_curpos;
DBMS_SQL.column_value_long (l_cursor,
1,
l_buflen,
l_curpos,
l_long_val,
l_long_len
);
l_curpos := l_curpos + l_long_len;
RESULT := RESULT || l_long_val;
DBMS_OUTPUT.put_line (l_long_val);
EXIT;
END IF;
RESULT := RESULT || l_long_val;
-- dbms_output.put_line( l_long_val );
EXIT WHEN l_long_len = 0;
END LOOP;
END IF;
UPDATE historiebei_text
SET texte = RESULT
WHERE bei_nr = beinr;
-- dbms_output.put_line( '====================' );
-- dbms_output.put_line( 'Long was ' || l_curpos || ' bytes in length' );
DBMS_SQL.close_cursor (l_cursor);
EXCEPTION
WHEN OTHERS
THEN
IF DBMS_SQL.is_open (l_cursor)
THEN
DBMS_SQL.close_cursor (l_cursor);
END IF;
RAISE;
END setlongbeitext; |
Partager