lea*_*sql 6 oracle stored-procedures sql-execution-plan
我通常在sqlplus中使用以下代码生成解释计划:
SET AUTOTRACE ON
SET TIMING ON
SET TRIMSPOOL ON
SET LINES 200
SPOOL filename.txt
SET AUTOTRACE TRACEONLY;
{query goes here}
SPOOL OFF
SET AUTOTRACE OFF
Run Code Online (Sandbox Code Playgroud)
但是如果我想为存储过程生成解释计划呢?
有没有办法为整个存储过程生成解释计划?SP没有输入/输出参数.
您正在生成的内容被正确地称为"执行计划"."解释计划"是用于生成和查看执行计划的命令,就像您的示例中的AUTOTRACE TRACEONLY一样.
根据定义,执行计划适用于单个SQL语句.PL/SQL块没有执行计划.如果它包含一个或多个SQL语句,那么每个语句都将具有执行计划.
一种选择是从PL/SQL代码手动提取SQL语句并使用您已经显示的过程.
另一种选择是激活SQL跟踪然后运行该过程.这将在服务器上生成一个跟踪文件,其中包含会话中执行的所有语句的执行计划.跟踪是相当原始的形式,因此通常最容易使用Oracle的TKPROF工具对其进行格式化; 还有各种第三方工具可以处理这些跟踪文件.