Вставить в таблицу PLSQL с динамической переменной

#oracle #plsql #oracle-sqldeveloper

#Oracle #plsql #oracle-sqldeveloper

Вопрос:

Ну, у меня есть динамическая переменная

 private_table_name VARCHAR2(100) := 'test';
 

test это имя таблицы.

Теперь я хочу вставить в таблицу с этим значением.

 INSERT INTO private_table_name VALUES (employee_rec.employee_id, concaternate_employee_name(employee_rec.employee_id), employee_rec.salary * 1.10);
 

Ответ №1:

Это динамический SQL, который вы должны использовать. Например:

 SQL> CREATE TABLE test
  2  (
  3     price   NUMBER
  4  );

Table created.

SQL> DECLARE
  2     private_table_name  VARCHAR2 (100) := 'test';
  3  BEGIN
  4     EXECUTE IMMEDIATE   'insert into '
  5                      || private_table_name
  6                      || ' (price) values (50)';
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL> SELECT * FROM test;

     PRICE
----------
        50

SQL>