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

Позволено ли е използването на SELECT в конвейерна PL/SQL таблична функция?

  1. обикновено DML ограниченията се отнасят само до оператори за модификация (UPDATE, DELETE ...), така че SELECT трябва да е ОК. Ще се опитам да намеря конкретно изявление от Oracle.

  2. Изгледите биха били вашият първи инструмент за модулиране на често използвани заявки.

  3. Функциите имат недостатък спрямо изгледите:ако се извикат от друг SELECT, те не се изпълняват в същия момент от време като основния SELECT. Всяко извикване на SELECT е последователно, но тъй като SELECT са във функционалния код, а не в основния SQL, може да върнете непоследователни резултати. Това не е възможно с изгледи и подизбор:ако голям израз извиква изглед, изгледът се изгражда в същия момент от време като основната заявка.

Актуализация :относно вашия коментар относно параметризираните заявки

Можете да създавате параметризирани изгледи, тоест изгледи, които зависят от променливи, зададени преди изпълнението. Ето пример за AskTom показвайки как можете да го направите с userenv('client_info') или dbms_session.set_context .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Обединение на две таблици, които нямат пълно съвпадение на колони

  2. SQL грешка:ORA-02291:ограничение на целостта

  3. Как да създадете PL/SQL слаб референтен курсор в базата данни на Oracle

  4. Използване на тригер за прилагане на ограничение за проверка на външен ключ

  5. Вмъкване на стойност по подразбиране, когато е вмъкната нула