Я хотел бы знать, возможно ли выполнить более одного оператора SQL в одном execute()
или do()
вызове с использованием DBD::Oracle
через Perl DBI
. Пример:
# Multiple SQL statements in a single query, separated by a ";"
$sql = 'UPDATE foo SET bar = 123; DELETE FROM foo WHERE baz = 456';
$sth = $dbh->prepare($sql);
$sth->execute;
# ...or...
$dbh->do($sql);
Я спрашиваю об этом не потому, что на самом деле хочу сделать это, а потому, что хочу оценить возможный ущерб от успешной атаки SQL-инъекцией. И да, я знаю, что независимо от ответа на этот вопрос, возможность внедрения SQL по-прежнему должна быть устранена в его корне с использованием только значений связывания и надежного ввода и т. Д. Но вопрос остается: можно ли сделать DBD::Oracle
выполнить несколько операторов?
В качестве связанного примера, DBD::mysql
имеет опцию подключения mysql_multi_statements
, которая явно включает эту «функцию». Я не могу избавиться от ощущения, что есть какая-то похожая, возможно, недокументированная и неясная опция Oracle OCI, которая каким-то образом доступна через DBD::Oracle
, которая включит то же самое.
Если это имеет значение, это:
perl
5.8.8
DBD::Oracle
1,22
- Oracle 11g (11.01.0700)