1.5.1自动子程序内联

1.5.1自动子程序内联
oracle 11g开始在plsql中使用pragma inline 编译器指令,可以使编译器内联子程序,如果plsql_optimize_level被
设置为2,则必须设置pragma inline。
--案例--
create or replace procedure inline_demo(a number,b,number) is
pragma inline(add_numbers,'YES’);
begin
for i in 1.10000 loop
dbms_output.put_line(add_numbers(2,1));
end loop;
end;
/
当然这里如果我们把plsql_optimize_level 设置成3那么数据库会自动内联函数。
这里oracle有一个建议,那就是在编译存储过程的时候然数据库引擎优化plsql存储过程。
1.5.2 continue语句
直接给个例子
begin
  for i in 1..10  loop
    if mod(i,2)=0 then
      continue;
    else
      dbms_output.put_line('基数');
    dbms_output.put_line(i);
    end if;
  end loop;
end;
/
1.5.3跨回话函数结果缓存
CREATE OR REPLACE FUNCTION F_RESULT_CACHE RETURN NUMBER RESULT_CACHE AS
V_RETURN NUMBER;
BEGIN
SELECT COUNT(*) INTO V_RETURN FROM T;
RETURN V_RETURN;
END;
/

对于采用了RESULT_CACHE的函数,Oracle自动将函数的返回结果缓存,下次执行的时候,不会实际执行函数,而是直接返回结果。

而且由于缓存的结果存储在SGA中,因此所有的会话可以共享这个结果。在上面的例子中,断开连接并重建登陆后,新的会话也是可以利用存储在SGA中的函数缓存的。

注意,函数的RESULT_CACHE功能自动和函数的输入参数关联,即使输入参数不起任何作用,不同的输入参数也会导致RESULT_CACHE不生效。
rrsult_cache clause
result_cache relies_on(table_name) 此字句对缓存的结果又限制,对引用表的任何改变都会使得函数无效,包括依赖于函数的任何函数,过程或试图。

1.5.11 simple_integer 数据类型
它是binary_integer的派生子类型,但有同样的值范围,不同是simple_integer不包含null值而且截断溢出,而且截断溢出不会引发错误,如果选择本地编译代码,那应该选择simple_integer类型,因为它为编译代码提供了重大的性能改进。



















来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26509390/viewspace-1398471/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26509390/viewspace-1398471/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值