我通常在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
但是如果我想为存储过程生成解释计划呢?
您正在生成的内容被正确地称为“执行计划”. “解释计划”是用于生成和查看执行计划的命令,就像您的示例中的AUTOTRACE TRACEONLY一样.
根据定义,执行计划适用于单个sql语句. PL / sql块没有执行计划.如果它包含一个或多个sql语句,那么每个语句都将具有执行计划.
一种选择是从PL / sql代码手动提取sql语句并使用您已经显示的过程.
另一种选择是激活sql跟踪然后运行该过程.这将在服务器上生成一个跟踪文件,其中包含会话中执行的所有语句的执行计划.跟踪是相当原始的形式,因此通常最容易使用Oracle的TKPROF工具对其进行格式化;还有各种第三方工具可以处理这些跟踪文件.