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

как да предам име на таблица като параметър на съхранената процедура?

Не можете да създадете %ROWTYPE променлива за неизвестна таблица и не можете статично да се позовавате на имена на колони, когато не знаете името на таблицата по време на компилиране.

Можете да използвате пакета dbms_sql, за да се справите с напълно динамични SQL изрази. Ще трябва да подготвите SQL израза, да опишете колоните, за да разберете броя на колоните и техните типове данни, да свържете подходящи променливи и след това да извлечете данните. Това е много по-тромав начин за писане на код от примера, който сте публикували, но ви дава изключителна гъвкавост.

Има редица примери за използване на пакета dbms_sql в документацията, към която дадох връзка. Може също да искате да проверите функцията dump_csv на Tom Kyte, която записва резултата от произволна заявка в CSV файл с помощта на UTL_FILE . Ако наистина искате да запишете данните в DBMS_OUTPUT , можете просто да замените UTL_FILE повиквания с DBMS_OUTPUT . Но съм почти сигурен, че искате да направите нещо по-полезно от просто да запишете данните в DBMS_OUTPUT буфер, така че процедурата на Том вероятно е по-близо до това, което наистина се опитвате да постигнете.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DBMS_JOB срещу DBMS_SCHEDULER

  2. Възможно ли е да се запита колона, разделена със запетая, за конкретна стойност?

  3. Курсорът в процедурата връща повече стойности от заявката

  4. текстово търсене на Oracle blob

  5. ORA-01017 Невалидно потребителско име/парола при свързване към 11g база данни от 9i клиент