Oracle
 sql >> база данни >  >> RDS >> Oracle

Пример за конвейерна функция на Oracle

Този урок на 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
…
10 реда от 20
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .patch_storage

  2. Нулирайте последователност според годината, а не с минимална или максимална стойност

  3. Какви ситуации причиняват пакетите на Oracle да станат невалидни?

  4. Как да създадете асоциативни масиви в базата данни на Oracle

  5. Как да изчислим средната стойност на колона и след това да я включим в заявка за избор в oracle?