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?