• Oracle Package中的包变量的使用


     在Oracle中,可以定义包变量。

          关于包变量的使用,不少的人不是很清楚。首先我们看如下的例子:

          CREATE OR REPLACE PACKAGE ds_test AS
              procedure proc1;
          END ds_test;
          /

          CREATE OR REPLACE PACKAGE BODY ds_test AS
           n number:=0;
           procedure proc1
           is
           begin
             n:=n+1;
              dbms_output.put_line('n='||n);
           end proc1;

          END ds_test;
        /

          执行如下的脚本,其输出的结果是什么呢?

          BEGIN 
            DS_TEST.PROC1;
      
            DS_TEST.PROC1;
      
            DS_TEST.PROC1;
      
            DS_TEST.PROC1;
          END;

          呵呵执行结果是:

          n=1
          n=2
          n=3
          n=4

        这说明什么问题呢,这也就是说ORACLE中的Package酒相当于我们java中的一个class,在运行的时候被实例化,因此其中包变量就像是该实例中的实例变量一样。在Oracle中对包一个会话调用中,包变量是该会话中的“全局”变量。

         当然,在Oracle Package中,也可以定义包过程,其中很简单。比如将入行的包体修改一下:

           CREATE OR REPLACE PACKAGE BODY ds_test AS
           n number:=0;
           procedure proc1
           is
           begin
             n:=n+1;
              dbms_output.put_line('n='||n);
           end proc1;

           begin

                n:=n+100;

          END ds_test;
         /

          那么执行上述脚本后的结果是什么?

          执行后的结果是:

          n=101
          n=102
          n=103

          n=104

          由此可见,包过程是在一个会话中第一次调用时被执行,而在该会话中其他以后的调用中则不再被调用!

  • 相关阅读:
    java设计模式0--设计模式简介
    Eclipse常用快捷键与代码模板
    hadoop文件系统与I/O流
    java学习笔记16--I/O流和文件
    hadoop压缩框架
    hadoop中典型Writable类详解
    java学习笔记15--多线程编程基础2
    redis配置密码的方法
    编写的windows程序,崩溃时产生crash dump文件的办法
    windows程序崩溃生成dump文件
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386332.html
Copyright © 2020-2023  润新知