Как в процедуре PL / SQL передать имя таблицы в качестве параметра? - PullRequest
3 голосов
/ 09 августа 2010
CREATE PROCEDURE A(tab IN <table - what should I write here?>) AS
BEGIN
   INSERT INTO tab VALUES(123);
END A;

Как указать, что параметр tab является именем таблицы?

1 Ответ

11 голосов
/ 09 августа 2010

Вы не можете.Вместо этого вам нужно передать его в виде строки VARCHAR2, а затем использовать динамический SQL:

CREATE PROCEDURE A(tab IN VARCHAR2) AS
BEGIN
   EXECUTE IMMEDIATE 'INSERT INTO ' || tab || 'VALUES(123)';
END A;

. Прочитать о Динамический SQL и знать о проблемах, которые могут возникнуть при неразумном использовании,такие как низкая производительность, масштабируемость и безопасность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...