为什么我们在 plsql 中使用立即执行?

Kur*_*nna 3 plsql

为什么我们在 plsql 中使用“立即执行”?我知道我们用它来执行动态 sql 语句。但我仍然无法说服面试官。任何人都可以给我一个准确和正确的答案吗?虽然我每天都在使用它,但仍然无法解释它。我知道的一件事是,它用于 DML 语句并通过 select 语句检索多行。请给出使用“立即执行”的确切定义。

小智 6

EXECUTE IMMEDIATE 允许执行 DML 或 DDL 语句,该语句以字符串形式保存并且仅在运行时进行评估。这使人们能够根据程序逻辑动态创建语句。EXECUTE IMMEDIATE 也是您可以在 PL/SQL 块中执行 DDL 的唯一方法。有关这些特性的完整和彻底审查,请参阅Oracle 手册

虽然这是一个非常有用的工具,但应谨慎使用。除非明确需要动态 sql,否则最好在 PL/SQL 代码中直接声明 sql。这将使 Oracle 在编译时解析 SQL 的有效性,并减少执行预编译语句时的开销。此外,在动态构建 SQL 时,您需要非常小心以避免 SQL 注入攻击。