Непосредственно не отвечая на вопрос, но, вероятно, это не помогает, потому что вы можете связывать только значения переменных, а не имена объектов; поэтому только :p_id
действителен здесь. Лучшее, что вы можете сделать, это:
vSql := 'SELECT ' || p_nomeCampo || ' FROM ' || vTable
|| ' WHERE ' || vPkColumn || ' = :p_id';
Конечно, вы должны быть уверены, что значения, которые у вас есть для p_nomeCampo
, vTable
и vPkColumn
, не подвержены SQL-инъекции.
Это помогает показать ошибку, которую вы получаете, хотя, опять же, в данном случае это не совсем вопрос ...