首页 > 代码库 > 【PLSQL】PLSQL中复合数据类型

【PLSQL】PLSQL中复合数据类型

1,常见的操作数据库的技术有那些

   jdbc     使用java 访问数据库的技术
   PLSQL  (procedure  过程化sql) 在数据库内部操作数据的技术
   proc/c++    c 和 c++ 访问数据库的技术
   ODBC      微软提供访问数据库的技术
   OCI          oracle  底层的连接接口 

2,Oracle中的复合数据类型

Oracle中的复合数据类型record,table,cursor

2.1 record类型

2.1.1 语法

           /*定义一个record类型*/           type record类型名称 is record(                属性  数据类型,                属性  数据类型                ...           );           /*使用record类型名称定义一个record变量*/           record变量名   record类型名称

也可以使用表的字段来定义,

           /*使用表的字段类型定义一个record类型*/           type record类型名称 is record(                属性  表名.属性名%type,                属性  表名.属性名%type                ...           );           /*使用record类型名称定义一个record变量*/           record变量名   record类型名称

2.1.2 示例

set serveroutput on;declare           type  emptype  is  record(                  id     number,                  name varchar2(5)            );           var_emp   emptype;begin           var_emp.id:=1;           var_emp.name:=‘jame‘;           dbms_output.put_line(var_emp.id);end;/

2.2 table类型

2.2.1 语法

/*定义一个table类型*/type    table类型名  is  table  of  元素类型名    index  by  binary_integer;/*定义一个table变量*/变量名      table类型名;

访问数据的方式,

table变量(下标):=值;

2.2.2 示例

      declare              type  numstype  is table of  number   index by binary_integer;              var_nums   numstype;                     begin              var_nums(0):=9;              var_nums(1):=5;              var_nums(2):=2;              var_nums(3):=7;              var_nums(4):=0;              dbms_output.put_line(var_nums(3));/*打印下标为3的元素*/      end;

table中的数据也可以使用迭代的思想来操作

     下标不连续时 遍历table类型的变量      
      迭代思想:
      变量名.first()   获取第一个元素对应的下标 (元素对应的最小下标)
      变量名.next(n)  根据一个元素的下标n  得到下一个元素对应的下标
      变量名.last()     获取最后一个元素对应的下标  

例如:

   set serveroutput on;       declare              type  numstype  is table of  number   index by binary_integer;              var_nums   numstype;               var_index    binary_integer:=0;                    begin              var_nums(0):=9;              var_nums(1):=5;              var_nums(-12):=2;              var_nums(3):=7;              var_nums(4):=0;              -- var_nums.count();               var_index :=  var_nums.first();              loop                      dbms_output.put_line(var_nums(var_index));                      var_index:=var_nums.next(var_index);                      if var_index =  var_nums.last()  then                             dbms_output.put_line(var_nums(var_index));                             exit;                       end if;                end loop;       end;     /

 

2.3 cursor类型

2.3.1 语法

/*声明游标*/ cursor   游标名   is  select语句;/*打开游标*/open   游标名;/*提取数据,将结果存储到变量中,一般都是record类型*/fetch   游标名   into  变量;/*关闭游标*/close 游标名

2.3.2 示例

         declare                 /*使用s_emp创建一个游标变量*/                cursor  empcursor  is  select  id,first_name name,salary from s_emp;                /*创建一个record类型*/                type   emptype is  record(                       id    s_emp.id%type,                       name s_emp.first_name%type,                       salary  s_emp.salary%type                );                /*创建一个record变量*/                var_emp   emptype;         begin                /*打开游标*/                open   empcursor;                /*将游标的第一条值存储到var_emp中*/                fetch   empcursor  into  var_emp;                dbms_output.put_line(var_emp.id||:||var_emp.name||:||var_emp.salary);                /*将游标的第一条值存储到var_emp中*/                fetch   empcursor  into  var_emp;                dbms_output.put_line(var_emp.id||:||var_emp.name||:||var_emp.salary);                 /*关闭游标*/                close   empcursor;           end;         /

 

【PLSQL】PLSQL中复合数据类型