Заключение в кавычки идентификаторов для динамического SQL в PL / SQL - PullRequest
1 голос
/ 22 октября 2010

Существует ли функция PL / SQL или общая методика для цитирования неквалифицированных идентификаторов (например, mytable) для использования в динамически построенном запросе SQL?Как насчет частично или полностью определенных идентификаторов (a.b@c)?

Рассмотрим этот надуманный пример:

CREATE PROCEDURE by_the_numbers(COL_NAME VARCHAR, INTVAL INTEGER) IS
  ...
BEGIN
  -- COL_NAME is interpolated into SQL string
  -- INTVAL gets bound to :1
  stmt := 'SELECT * FROM tbl WHERE ' || COL_NAME || ' = :1';
  ...
END

... где мы не хотим разрешать наивное внедрение SQL в COL_NAME (например, значение '1 = 1 или 1').

1 Ответ

3 голосов
/ 23 октября 2010

Существует dbms_assert: http://www.oracle -base.com / article / 10g / dbms_assert_10gR2.php для предотвращения внедрения sql.

...