2013-10-09 4 views
0

Мне интересно, как закодировать этот процесс. Я использую объекты коллекции, чтобы извлекать информацию из таблицы. Затем я использую dbms_output.put_line для отображения значений, которые я собрал.Обнаружение последней строки с помощью dbms_output.put_line

Я хочу добавить строку к последней строке моего вывода. Например:

Таблица A

col1 col2 
1  3 
2  4 

Я тяну значения и использовать dbms_output.put_line для отображения этих элементов.

Он выведет:

1,3 
2,4 

Есть ли способ, чтобы добавить «Это последняя строка» до последней строки, собранной/отображаемая показать ...

1,3 
2,4 This is the last line 

Я пытался добавьте еще dbms_output.put_line после моего цикла во время процесса сбора, но он просто рассматривает его как 2 строки.

1,3 
2,4 
This is the last line. 
+3

Post код, который вы используете. Это зависит, помимо прочего, от типа используемой вами коллекции, является ли она разреженной или плотной и т. Д. –

ответ

1

Один из способов сделать это, чтобы вставить новую строку перед тем каждую строку текста - за исключением первой строки.

create table taba(
col1 number, 
col2 number 
); 
insert into taba values (1,2); 
insert into taba values (3,4); 
commit; 

declare 
    type tab_t is table of taba%rowtype; 
    tab tab_t; 
    cursor c is select * from taba; 
    first_row boolean; 
begin 
    open c; 
    fetch c bulk collect into tab; 
    close c; 

    first_row := true; 
    for x in 1..tab.count loop 
    if not first_row then 
     dbms_output.put_line(''); 
    end if; 
    first_row := false; 
    dbms_output.put(tab(x).col1 || ',' || tab(x).col2); 
    end loop; 
    if not first_row then 
    dbms_output.put_line(' This is the last line'); 
    else 
    dbms_output.put_line('The table is empty'); 
    end if; 
end; 
/

Результаты:

1,2 
3,4 This is the last line 
+0

Я бы использовал 'dbms_output.new_line', а не' dbms_output.put_line ('') ', но эффект тот же. –

Смежные вопросы