Pipelined или конвейерные функции в PL/SQL

Поділитися
Вставка
  • Опубліковано 17 лис 2024

КОМЕНТАРІ • 15

  • @LizardTLT
    @LizardTLT 2 роки тому +3

    Отличные видео уроки. Работаю с Oracle более 20 лет и, не смотря на это, получаю удовольствие от просмотра.
    Отличная структура лекции, понятные примеры, грамотная профессиональная речь.
    Спасибо за труд.

    • @OracleDBD
      @OracleDBD  2 роки тому +1

      рад читать такой фидбек от ветеранов ;-)

  • @syngaporsky
    @syngaporsky 2 роки тому

    Если упразднить автономную транзакцию в функции-обертке, обращающейся к sysdate, то результат все равно станет зависим от времени. Так как применение plsql-ных функций (а не функций самого языка вроде sysdate) в SQL-запросе чревато получением "новых данных" в процессе исполнения. Мне это говорили знающие люди, но Ваши примеры натолкнули меня на мысль это проверить. Так что спасибо большое за примеры.

  • @mrprogre_avandy_electronics
    @mrprogre_avandy_electronics 3 роки тому

    Спасибо! Интересный урок

  • @ЕвгенийСеменов-т9ь

    Привет. Есть ли возможность создавать функции, которые возвращают разные по типу таблиц данные? Простой пример: входящяя текстовая переменная функции принимает разные Sql запросы, внутри тела функции выполняется и выводит результат. Так как запросы разные, то и тип результата отличается.

  • @SunIsland227
    @SunIsland227 3 роки тому +2

    Не используем конвейерные функции, так как не используем коллекции. А коллекции не используем так как на промышленных объемах (от 100 миллионов/миллиардов строк) быстро переполняется PGA при использовании коллекций в пакетных обработках.
    Лучшее решение..это избавиться от коллекций и использовать обычные таблицы или временные))) Работает все намного быстрее плюс параллельность высокая.
    Я рекомендую автору провести аналогичные тесты ..используя обычные таблицы и полноценные объемы данных...

    • @OracleDBD
      @OracleDBD  3 роки тому +2

      Спасибо за комментарий. Именно поэтому я не рекомендую использовать коллекции на больших объемах данных. Автор всё это уже давно исследовал. Тем не менее, это никак не мешает освещению конвейерных функций.

  • @maksimkuznetsov2132
    @maksimkuznetsov2132 3 роки тому

    В сложных запросах, которые выгребают много данных используем динамически собираемый select
    И возвращаем из процедуры в сисрефкурсор
    Есть вопрос по поводу конвеерных функций.
    Если мы хотим коллекцию использовать в запросе, то не лучше ли избегать табличных функций и конвеерных в частности в пользу вьюх? Вообще если мы можем SQL-ем обойтись, то нужны ли функции?

    • @OracleDBD
      @OracleDBD  3 роки тому +1

      Спасибо, что поделились. По поводу вопроса. Зависит от ситуации. Например, вы хотите дать API, которое бы на вход принимало и выполняло строго определенные запросы (с хинтами), например. Можно даже кастомно логировать, кто запрашивал данные, не настраивая FGA. Почему нет. Наверняка, можно придумать еще кейсы, где бы табличные функции были более предпочтительней. В большинстве случаю - view подойдут.

  • @Alexander-wp7hz
    @Alexander-wp7hz 3 роки тому +1

    А что за ПО для сравнения на 11:56?

  • @clipper1995N
    @clipper1995N Рік тому +1

    Всем привет на 08:06 вижу get_session_pga , в ней запрос без фильтра по v$statname, по номеру или наименованию статистики, разве это верно?

    • @OracleDBD
      @OracleDBD  Рік тому +2

      Николай, спасибо! Удивительно как я пропустил... поправил в репозитории. В видео уже, к сожалению, не исправить. Цифры плюс минус те же получились.
      Итоговый вариант:
      create or replace function get_session_pga return number as
      v_pga_size number;
      begin
      select sum(round(s.value / 1024))
      into v_pga_size
      from sys.v$sesstat s
      ,sys.v$statname n
      where s.statistic# = n.statistic#
      and sid = sys_context('USERENV', 'SID')
      and lower(n.name) = 'session pga memory';
      return v_pga_size;
      end;
      /

    • @clipper1995N
      @clipper1995N Рік тому

      @@OracleDBD я часто смотрю разные лекции, такое бывает, обычно в закрепе авторы о неточностях комментарии оставляют, это нормальная практика )