为什么从客户端应用程序调用 PL/SQL 调用 SQL 引擎

Why SQL Engine is called for PL/SQL call from client application?

本文关键字:SQL 调用 引擎 PL 应用程序 为什么 客户端      更新时间:2023-10-16

在我的应用程序中,我只是为数据库相关活动调用存储过程。

我已经在这里发布了一个与性能相关的问题。

伯·马斯卡罗回答了我的问题,他的回答中有一句话像

*Each PLSQL call within your C++ app call invokes the SQL engine which then invokes the PLSQL engine for the procedure call*

我的问题是为什么在调用PL/SQL时需要调用sql引擎?为什么我的客户端应用程序不能直接调用 PL/SQL 引擎来处理 PL/SQL?

SQL 引擎并不总是

需要调用 - 它取决于客户端以及客户端是否嵌入了 PLSQL 引擎。例如,Oracle Forms具有嵌入式PLSQL引擎,因此在调用PLSQL过程时,可以将整个调用传递给引擎,而不会发生上下文切换。但是,使用 PRO*C,您始终执行 SQL 语句,然后执行 PLSQL 调用的"块",如下所示:

begin
   call_proc;
end;

这调用了SQL解析器,一旦执行"begin"匿名块,它就会切换到PLSQL引擎。这就是客户端的架构方式。SQL*Plus 与此类似,你运行 SQL 引擎来调用 PLSQL 块。