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

Може ли SQL заявка на oracle да изпълни низова заявка, избрана от таблица?

Като цяло това не е особено добър дизайн - съхраняването на SQL в таблици и динамичното му изпълнение въвежда всякакви проблеми със сигурността и поддръжката.

Вероятно е възможно (въпреки че е твърде късно в петък, който започна твърде рано, за да се опитам да го разбера) да направя наистина страхотна XML заявка по линия на тази заявка, която изпълнява count(*) срещу всяка таблица в схемата което ще направи всичко това в една заявка.

За по-голямата част от програмистите обаче по-простият подход би бил да превъртат заявките, да ги изпълняват една по една и да съхраняват резултатите някъде. Потенциално локалната променлива ще бъде добавена например към колекция от преброявания.

FOR q IN (SELECT sql_text FROM query_table)
LOOP
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM (' || q.sql_text || ')'
     INTO some_local_variable;
  <<do something with the local variable>>
END LOOP;

Тъй като се опитвате да създадете изглед, можете да вземете тази логика и да я поставите във функция на конвейерна таблица. Ще направите PIPE ROW за връщане на данни в рамките на цикъла. Тогава вашият изглед може да бъде създаден върху функцията за конвейерна таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпратете .txt файл като прикачен файл чрез Oracle Stored Procedure

  2. oracle plsql:как да анализирате XML и да го вмъкнете в таблица

  3. Грешка в Oracle PL/SQL процедура

  4. java.lang.ArrayIndexOutOfBoundsException:за jdbc връзка

  5. 12.2 RAC/GI Нови функции