Oracle存储过程本地编译方式

   通常将Oracle存储过程编译为本地编译方式的测试记录.

  测试用表:

?

1
2
3
4
5
6
7

SQL> create table t1(rid number);
  
Table created
  
SQL> create table t_n(rid number);
  
Table created

  测试用的存储过程:

?

1
2
3
4
5
6
7
8
9
10
11
12
13

create or replace procedure pro_xcl(p1 varchar2)
is
begin
    dbms_output.put_line(p1);
   
    insert into t1 select rownum as rr
    from dual connect by rownum < 1000000;
    commit;
    
exception
  when others then
     dbms_output.put_line(sqlcode||' : '||substr(sqlerrm,200)); 
end;

  测试:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

SQL> set serveroutput on
SQL> set timing on
--查看存储过程当前编译方式
SQL>  select plsql_code_type from all_plsql_object_settings where name='PRO_XCL';
  
PLSQL_CODE_TYPE
--------------------------------------------------------------------------------
INTERPRETED
  
Executed in 0.14 seconds
 
SQL> exec pro_xcl('11g INTERPRETED');
  
11g INTERPRETED
  
PL/SQL procedure successfully completed
  
Executed in 4.68 seconds

  更改下,pro_xcl,将t1换成t_n表。

  测试本地编译方式出来的存储过程运行速度.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

-- 用本地编译方式编译存储过程pro_xcl
SQL> alter procedure pro_xcl compile plsql_code_type=native;
  
Procedure altered
  
Executed in 0.062 seconds
 --查看存储过程当前编译方式,可看到,已变成本地编译方式了
SQL>  select plsql_code_type from all_plsql_object_settings where name='PRO_XCL';
  
PLSQL_CODE_TYPE
--------------------------------------------------------------------------------
NATIVE
  
Executed in 0.063 seconds
 
 
SQL> exec pro_xcl('11g NATIVE');
  
11g NATIVE
  
PL/SQL procedure successfully completed
  
Executed in 4.087 seconds

  本地编译方式要快0.6秒,没有快到想象的夸张的地步。

  设置当前session程序编译方式默认为本地编译:

  alter session set plsql_code_type=native;

  设置数据库默认程序为本地编译方式:

  alter system set plsql_code_type=native;

  与PLSQL编译相关一些参数:

?

1
2
3
4
5
6
7
8
9
10

SQL> show parameter plsql
  
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
plsql_ccflags                        string     
plsql_code_type                      string      INTERPRETED
plsql_debug                          boolean     FALSE
plsql_optimize_level                 integer     2
plsql_v2_compatibility               boolean     FALSE
plsql_warnings                       string      DISABLE:ALL

时间: 2024-08-30 12:15:31

Oracle存储过程本地编译方式的相关文章

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)_oracle

oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有很多优点,具体归纳如下: * 存储过程和函数以命名的数据库对象形式存储于数据库当中.存储在数据库中的优点是很明显的,因为代码不保存在本地,用户

JAVA与Oracle存储过程(一)

在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储过程.存储过程在数据库中运算时自动生成各种执行方式,因此,大大提高了对其运行时的执行速度.在大型数据库系统如Oracle.SQL Server中都不仅提供了用户自定义存储过程的功能,同时也提供了许多可作为工具进行调用的系统自带存储过程. 所谓存储过程(Stored Procedure),就是一组用于

Oracle存储过程和自定义函数详解

oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 (     参数1 IN NUMBER,     参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT   将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条   记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)  

Oracle存储过程和自定义函数详解_oracle

概述 PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用. 相同点: 完成特定功能的程序 不同点:是否用return语句返回值. 举个例子: create or replace procedure PrintStudents(p_staffName in xgj_test.username%type) as cursor c_testData is select t.sal, t.comm from

大家一起分享C#调用oracle存储过程

oracle|存储过程 大家一起分享C#调用oracle存储过程 执行结果 ?????? ? ?????? ? ????? ? Oracle方面 1.创建Oracle过程存储 create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)as? varparam varchar2(28);begin? varparam:=paramin;? p

Spring 调用ORACLE存储过程的结果集

oracle|存储过程 oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它自己的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程(我是说返回结果集的存储过程),我还没有什么方法能用一个通用的程序来处理ORACLE.太多的教材或文章在讲存储过程的调用只是不负责任地简单执行一些涵数或无结果返回的存储过程,使大多数读者根本不知道到底

ASP调用Oracle存储过程

oracle|存储过程 夏毅 一.ASP动态网站开发技术 随着人们对因特网认识的加深和IT技术的发展,一成不变的静态网页已经越来越满足不了信息交互和电子商务的需求,因此以数据库为核心开发能够实现信息交互和个性化服务的网页已经成为一种潮流.为了迎合动态交互式网页的开发趋势,出现了可以与后台数据库进行互动的Web开发技术,目前比较流行的一类是建立在微软Windows平台IIS基础上的ASP(Active Server Pages)技术.它是将VBscript.JavaScript等特定的脚本语言利用

C#调用ORACLE存储过程返回结果集及函数

oracle|存储过程|函数   ORACLE段:首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集.1:建立PACKAGE:CREATE OR REPLACE package SCOTT.pk_wtistype mytype is ref cursor;procedure p_wt(mycs out mytype);function f_get(str in varchar2)return varchar2;end; /说明:其实PACKAG