加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle中分析存储的函数

发布时间:2020-12-12 16:30:04 所属栏目:百科 来源:网络整理
导读:在Oracle11g中是否可以分析从SELECT … INTO …语句中的plsql代码中调用的存储函数? 对于分析,我使用DBMS_HPROF实用程序.在DBMSHP_FUNCTION_INFO表中运行分析后,我可以看到除SELECT … INTO中调用的函数之外的所有内容…. 在11g2中,我的HPROF结果包括被称为
在Oracle11g中是否可以分析从SELECT … INTO …语句中的plsql代码中调用的存储函数?

对于分析,我使用DBMS_HPROF实用程序.在DBMSHP_FUNCTION_INFO表中运行分析后,我可以看到除SELECT … INTO中调用的函数之外的所有内容….

在11g2中,我的HPROF结果包括被称为包函数的行
SELECT my_pkg.my_func(x) INTO y FROM dual;

现在,我没有看到每一行 – 通常只有SQL语句.例如,我在以下包中描述了“main_test”.

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0;

CREATE OR REPLACE PACKAGE matt_t1 AS
  FUNCTION p (a NUMBER)
    RETURN NUMBER;

  PROCEDURE main_test;
END matt_t1;

CREATE OR REPLACE  TYPE my_num_tab_type IS TABLE OF NUMBER;

CREATE OR REPLACE PACKAGE BODY matt_t1 AS
  FUNCTION p (a NUMBER)
    RETURN NUMBER IS
    x   NUMBER := 0;
    t my_num_tab_type;
   BEGIN
     t := new my_num_tab_type();
      for i in 1..10000 loop
          x := ln (x+i);
          t.extend();
         t(i) := x;
     END loop;

     SELECT SUM(column_value) INTO x FROM TABLE(t); 
    RETURN x;
  END p;

  PROCEDURE main_test IS
    x   NUMBER;
  BEGIN
    FOR i IN 1 .. 100 LOOP
      x   := matt_t1.p (i);
       DBMS_OUTPUT.put_line (x);
    END LOOP;
  END main_test;
END matt_t1;

在HPROF结果中,我看到了条目

SELECT SUM(column_value) INTO x FROM TABLE(t);

但不是,例如,

x := ln (x+i);

如果我只是通过PL / SQL直接赋值,那么我将函数p称为SELECT INTO vs得到相同的结果.无论哪种方式,10,000个自然对数的所有时间都在HPROF条目下进行

FUNCTION p (a NUMBER)

如果我直接调用MATT_T1.P()的调用,我也会得到相同的结果.

因此,我认为HPROF可能对它可以包含哪些PL / SQL行有一些限制,但在我看来,调用方法(SELECT..INTO)与它无关.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读