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

PLSQL динамична заявка

Динамичният SQL не може да види вашата PL/SQL променлива:трябва да му предадете низ, който може да бъде изпълнен в обхвата на SQL двигателя. Така че трябва да свържете името на таблицата с шаблонния текст на израза:

query1 := 'SELECT max(c)  FROM ' || variable_name;

Трябва също така да върнете резултата от заявката в променлива.

Ето как работи (премахнах част от ненужния код от вашия пример):

DECLARE    
 c_table VARCHAR2(40);
 c_obj VARCHAR2(20);
BEGIN
   for lrec in ( select a as tab_name from A )
   LOOP
      EXECUTE IMMEDIATE 'SELECT max(object_ref)  FROM ' || lrec.tab_name 
           into c_obj ;
      dbms_output.put_line('Maximum value: '|| lrec.tab_name
           || '='|| c_obj);
   END LOOP;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо Oracle връща специфична последователност, ако стойностите на „orderby“ са идентични?

  2. Функция ABS() в Oracle

  3. SYS_GUID() Функция в Oracle

  4. Как да получа фиктивна стойност за XML празен таг в таблица с помощта на Oracle?

  5. Искате тази проста заявка да се повтаря