Oracle PL / SQL:请参阅替换绑定变量的execute immediate sql

时间:2012-02-27 11:12:13

标签: oracle plsql

这是PL / SQL代码。我想DBMS输出完整的查询,因为它失败了。

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

1 个答案:

答案 0 :(得分:4)

没有直接回答这个问题,但它可能会失败,因为你只能绑定变量值,而不能绑定对象名称;所以这里只有:p_id有效。你可以做的最好的是:

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

当然,您需要确保p_nomeCampovTablevPkColumn的值不受SQL注入的影响。

它有助于显示您所获得的错误,但在这种情况下,这不是直接问题的重点......