zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    SEO在网页制作中的应用
    日期控件选2016-01-01却变为2015-01-01问题
    IE8兼容placeholder的方案
    各种乱码,编码问题设置方法整理(UTF-8)
    JQuery简单实现图片轮播效果
    解决 jsp eclipse异常 【The import javax.servlet cannot be resolved】
    tomcat加载不了spring-webjar终极解决办法
    MyEclipse Web Project导入Eclipse Dynamic Web Project,无法部署到tomcat问 题
    2020-11-01助教一周总结(第九周)
    2020-10-25助教一周总结(第八周)
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386332.html
Copyright © 2011-2022 走看看