Oracle PL / SQL: посмотрите немедленный SQL выполнения с заменой переменной связывания - PullRequest
1 голос
/ 27 февраля 2012

Это код PL / SQL.Я хочу, чтобы СУБД выводила полный запрос по мере его выполнения, поскольку он не работает.

vSql := 'SELECT :p_nomeCampo FROM :vTable WHERE :vPkColumn = :p_id';
EXECUTE IMMEDIATE vSql INTO vOutput USING p_nomeCampo, vTable, vPkColumn, p_id;

1 Ответ

4 голосов
/ 27 февраля 2012

Непосредственно не отвечая на вопрос, но, вероятно, это не помогает, потому что вы можете связывать только значения переменных, а не имена объектов; поэтому только :p_id действителен здесь. Лучшее, что вы можете сделать, это:

vSql := 'SELECT ' || p_nomeCampo || ' FROM ' || vTable
    || ' WHERE ' || vPkColumn || ' = :p_id';

Конечно, вы должны быть уверены, что значения, которые у вас есть для p_nomeCampo, vTable и vPkColumn, не подвержены SQL-инъекции.

Это помогает показать ошибку, которую вы получаете, хотя, опять же, в данном случае это не совсем вопрос ...

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