Този урок на Oracle показва как да създадете Pipelined функция. Следвайте тези стъпки:
1. Създайте тип обект
За конвейерната функция на Oracle трябва да имаме тип обект, през който можем да изпращаме редовете. Създайте такъв, както следва:
CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000); /
2. Създайте съхранена функция като PIPELINED
Следващата функция използва горния тип, за да върне стойностите. И редовете произвеждат един по един чрез курсор въз основа на SQL заявка:
CREATE OR REPLACE FUNCTION get_values RETURN t_list PIPELINED IS l_list t_list; w_row_count NUMBER := 0; BEGIN for cur in ( SELECT 'LINE' || level as value FROM dual CONNECT BY level <= 20 ) loop PIPE ROW ( cur.value ); w_row_count := w_row_count + 1; end loop; dbms_output.put_line('Total ' || w_row_count || ' rows selected'); END get_values; /
3. Извикайте функцията с помощта на SQL заявка
Сега най-накрая можем да извикаме горната функция и да получим редовете по желание:
select * from TABLE(get_values());
Изход:
COLUMN_VALUE |
---|
LINE1 |
LINE2 |
LINE3 |
LINE4 |
LINE5 |
LINE6 |
LINE7 |
LINE8 |
LINE9 |
LINE10 |
… |
-
.patch_storage
-
Нулирайте последователност според годината, а не с минимална или максимална стойност
-
Какви ситуации причиняват пакетите на Oracle да станат невалидни?
-
Как да създадете асоциативни масиви в базата данни на Oracle
-
Как да изчислим средната стойност на колона и след това да я включим в заявка за избор в oracle?