283: LOOP
284: -- fill bytes from the source till buf is full
285: BEGIN
286: LOOP
287: len := utl_raw.length(buf);
288: EXIT WHEN (len = 2000);
289: cut_len := 2000 - len;
290: IF (cut_len > (lengthb(src(src_row)) - src_pos + 1)) THEN
291: cut_len := lengthb(src(src_row)) - src_pos + 1;
289: cut_len := 2000 - len;
290: IF (cut_len > (lengthb(src(src_row)) - src_pos + 1)) THEN
291: cut_len := lengthb(src(src_row)) - src_pos + 1;
292: END IF;
293: buf := utl_raw.concat(buf, utl_raw.substr(
294: utl_raw.cast_to_raw(src(src_row)), src_pos, cut_len));
295: src_pos := src_pos + cut_len;
296: IF (src_pos > lengthb(src(src_row))) THEN
297: src_row := src_row + 1;
290: IF (cut_len > (lengthb(src(src_row)) - src_pos + 1)) THEN
291: cut_len := lengthb(src(src_row)) - src_pos + 1;
292: END IF;
293: buf := utl_raw.concat(buf, utl_raw.substr(
294: utl_raw.cast_to_raw(src(src_row)), src_pos, cut_len));
295: src_pos := src_pos + cut_len;
296: IF (src_pos > lengthb(src(src_row))) THEN
297: src_row := src_row + 1;
298: src_pos := 1;
299: END IF;
300: END LOOP;
301: EXCEPTION
302: WHEN no_data_found THEN
303: EXIT WHEN utl_raw.length(buf) = 0;
304: END;
305:
306: -- extract from buf at character boundary
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
303: EXIT WHEN utl_raw.length(buf) = 0;
304: END;
305:
306: -- extract from buf at character boundary
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
308: length(utl_raw.cast_to_varchar2(buf))));
309: dst(dst_row) := utl_raw.cast_to_varchar2(utl_raw.substr(buf, 1, len));
310: IF (len < utl_raw.length(buf)) THEN
311: buf := utl_raw.substr(buf, len + 1);
304: END;
305:
306: -- extract from buf at character boundary
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
308: length(utl_raw.cast_to_varchar2(buf))));
309: dst(dst_row) := utl_raw.cast_to_varchar2(utl_raw.substr(buf, 1, len));
310: IF (len < utl_raw.length(buf)) THEN
311: buf := utl_raw.substr(buf, len + 1);
312: ELSE
305:
306: -- extract from buf at character boundary
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
308: length(utl_raw.cast_to_varchar2(buf))));
309: dst(dst_row) := utl_raw.cast_to_varchar2(utl_raw.substr(buf, 1, len));
310: IF (len < utl_raw.length(buf)) THEN
311: buf := utl_raw.substr(buf, len + 1);
312: ELSE
313: buf := NULL;
306: -- extract from buf at character boundary
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
308: length(utl_raw.cast_to_varchar2(buf))));
309: dst(dst_row) := utl_raw.cast_to_varchar2(utl_raw.substr(buf, 1, len));
310: IF (len < utl_raw.length(buf)) THEN
311: buf := utl_raw.substr(buf, len + 1);
312: ELSE
313: buf := NULL;
314: END IF;
307: len := lengthb(substr(utl_raw.cast_to_varchar2(buf), 1,
308: length(utl_raw.cast_to_varchar2(buf))));
309: dst(dst_row) := utl_raw.cast_to_varchar2(utl_raw.substr(buf, 1, len));
310: IF (len < utl_raw.length(buf)) THEN
311: buf := utl_raw.substr(buf, len + 1);
312: ELSE
313: buf := NULL;
314: END IF;
315: dst_row := dst_row + 1;