OracleのSQLクエリが実際に実行せずに正常に実行されるかどうか(クエリが構文的に正しいか、すべてのテーブル/列名が存在するか、ユーザーが適切な権限を持っているかなど)を確認する方法はありますか?クエリはSELECTではない可能性がありますが、データが変更される場合に実際に変更が行われることは望ましくありません。
私は次のようなことを考えました:
$valid = false;
$stmt = oci_parse($db, $query);
if(!empty($stmt)) {
$res = oci_execute($stmt, OCI_DESCRIBE_ONLY|OCI_NO_AUTO_COMMIT);
if(!empty($res)) {
$name = oci_field_name($res, 1);
if(!empty($name)) {
$valid = true;
}
}
oci_rollback($db);
}
しかし、$ queryにDDLが含まれている場合、Oracleがすぐにそれをコミットすることを理解しています。では、変更を加えずにクエリをチェックする方法はありますか?