11.oracle包详解

1.程序包概述
  程序包是对相关过程,函数,变量,游标和异常等对象的封装
  程序包由规范(包头)和主体(包体)两部风组成
  规范中可以声明程序包中公共对象。
  包括类型、变量、常量、异常、游标规范和子程序规范等
  主体中可以声明程序包私有对象和实现在包规范中声明的子程序和游标

2.创建程序包的语法
  包头和包体名字一致
  程序包规范语法:
    --创建包定义:
    CREATE [OR REPLACE] PACKAGE 名字
    IS|AS
      变量、常量及数据类型定义;
      游标定义头部;
      函数、过程的定义和参数列表以及返回类型;
    end [包名];
    --创建包体:
    CREATE [OR REPLACE] PACKAGE BODY 包名
    is/as
      PROCEDURE 过程名(参数) is/as
      begin
        过程体;
      end [过程名];
      
      function 函数名(参数) return 类型 is/as
        begin
          函数体;
        end [函数名];
      end;
 程序实现
    --定义包头
    create OR REPLACE PACKAGE PACK1
      IS
        AA NUMBER :=9; --可以被调用
        PROCEDURE INSERT_DEPT(V_DEPT IN DEPT%ROWTYPE);
        FUNCTION FUN(V1 NUMBER,V2 NUMBER) RETURN NUMBER;
      END;
    --包体实现
    create or REPLACE PACKAGE BODY PACK1
      IS
      BB NUMBER:=10; --不可以被调用
      PROCEDURE INSERT_DEPT(V_DEPT IN DEPT%ROWTYPE)
        IS
      BEGIN
        INSERT INTO DEPT VALUES(v_dept.deptno,v_dept.dname,v_dept.loc);
      END;
      FUNCTION FUN(V1 NUMBER,V2 NUMBER) RETURN NUMBER
        IS 
        BEGIN
          RETURN V1+V2;
        END;
     END;
调用:包名.元素名;
begin
   --dbms_output.put_line(pack1.bb); --报错
   dbms_output.put_line(pack1.AA);   --9
   dbms_output.put_line(pack1.FUN(1,2));--3   
end;
     
3.程序包中的游标
  游标的定义分为游标规范和游标主体两部分
  在包规范中声明游标规范时必须使用return子句指定游标的返回类型
  return 数据类型;
  RETURN子句指定的数据类型可以是:
  用 %ROWTYPE 属性引用表定义的记录类型
  程序员定义的记录类型,例如 TYPE EMPRECTYP IS RECORD(emp_id INTEGER,salary REAL) 来定义的。
  不可以是number, varchar2, %TYPE等类型。

  create or replace package pack2 is
      cursor mycursor return emp%rowtype;
      procedure mycursor_use;
  end;
   
  create or replace package body pack2 is
      cursor mycursor return emp%rowtype is select * from emp;
       procedure mycursor_use
          is
          v_emp emp%rowtype;
          begin
           open mycursor;
           fetch mycursor  into v_emp;
           while mycursor%found loop
              dbms_output.put_line(v_emp.ename);
              fetch mycursor  into v_emp;
           end loop;
           close mycursor;
          end;
    end;
  --ref游标
  create or replace package pack3 is
      type refcur is ref cursor;
      procedure mycursor_use;
    end;


  create or replace package body pack3  is
      procedure mycursor_use 
      is
         mycursor refcur;
         v_emp emp%rowtype;
      begin
        open mycursor for select * from emp;
        fetch mycursor  into v_emp;
        while mycursor%found loop
          dbms_output.put_line(v_emp.ename);
          fetch mycursor  into v_emp;
        end loop;
        close mycursor;
      end;
    end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 11是一种常用的数据库管理系统,而tnsnames.ora是其用来配置网络服务命名的文件。tnsnames.ora文件中含了数据库的连接信息,它的详解如下: 首先,tnsnames.ora文件是一个文本文件,在Oracle安装目录的network/admin文件夹下可以找到。通过编辑该文件,可以添加、修改和删除数据库连接配置。 每个数据库连接配置都要使用一个别名来定义,这个别名可以是任何合法的字符串。在tnsnames.ora文件中,每个连接配置由多个行组成,每个行都以连接配置的别名开始。 每个连接配置至少含以下几个关键信息: 1. (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名)(PORT = 端口号))) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = 服务名))) 其中,主机名是指数据库所在服务器的主机名或者IP地址,端口号是数据库监听器所使用的端口号,服务名是数据库的唯一标识。 另外,还可以在连接配置中设置其他可选的参数,如连接超时时间和字符集等。比如,可以设置CONNECT_TIMEOUT参数来限制连接的最长时间。 在tnsnames.ora文件中,还可以为每个连接配置定义多个不同的别名。这样,在应用程序中,就可以使用不同的别名来指定相同的数据库连接配置。 最后,需要说明的是,tnsnames.ora文件的修改只有在重启监听器后才会生效。 综上所述,tnsnames.ora是Oracle 11的一个重要配置文件,它用来定义数据库连接的别名和连接信息。通过对该文件的编辑,并重启监听器,可以实现数据库连接的配置和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值