`
123003473
  • 浏览: 1064216 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle %TYPE %ROWTYPE

 
阅读更多
Oracle %TYPE



%TYPE 是定义变量的一种方法



   V_StudentID students.id%TYPE 表示的含义:变量V_StudentID 与students表中id的字段数据类型一致,长度也一致,当students中id的数据类型改变时,那么V_StudentID的数据类型也会跟着改变。



%rowtype

    表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据,如:
  vs_row1  表%rowtype;
  vs_row2  游标%rowtype;



Oracle %type和%rowtype小实例

//%type  
//如果声明的变量是直接映射到数据库的某一列上,那么就可以使用%type关键字将变量  
//锚定到这个列上。这样做有什么好处呢?  
//比如:  
//declare v_ename scott.emp.ename%type;  
//当数据类型发生变化时,此方法显得非常灵活。  


//如果更改了列的长度,那么锚定到该列上的所有变量都会自动更改其长度;  
//假设我们将v_ename定义为varchar2(10),那么当emp表中的ename列发生变化时,  
//我们得手动将v_enam更改为emp.ename相同的数据长度;  
//当我们使用锚定类型后,变量就会自动进行调整。  
//%rowtype  
//%rowtype与%type相似;不过它将变量锚定到表的所有列,而不是锚定到某一列;  
//更多关于%rowtype与%type,  
//请参考:http://blog.csdn.net/BOBO12082119/archive/2010/12/02/6051367.aspx  
//下面是一个实例:  
create table dept(  
       deptno varchar2(5),  
       dname varchar2(20),  
       loc varchar2(20)  
       );  
create or replace procedure pro_insert(  
       deptno_in in dept.deptno%type,  
       dname_in in dept.dname%type,  
       loc_in in dept.loc%type  
       )  
as 
  v_dept dept%rowtype;  
begin  
     begin  
          insert into dept  
          select deptno_in,dname_in,loc_in  
          from dual;  
          commit;  
          dbms_output.put_line('inserting successed');  
          exception  
          when others then  
               rollback;  
     end;  
     begin  
          select deptno_in,dname_in,loc_in  
          into v_dept from dual;  
          dbms_output.put_line(  
          'The data having been inserted.'||  
          'deptno:'||v_dept.deptno||  
          ',dname:'||v_dept.dname||  
          ',loc:'||v_dept.loc  
          );  
     end;  
end pro_insert;  
//  
//上面的过程中,使用到了嵌套块;  
//所谓嵌套块就是块中包含其他子块;  
//嵌套块允许出现在代码块的异常处理部分和执行部分,  
//但是不允许出现在声明中。  
//  
SQL> set serveroutput on;  
SQL> exec pro_insert('111','财务部','福州');  
inserting successed  
The data having been inserted.deptno:111,dname:财务部,loc:福州  
PL/SQL procedure successfully completed  
//  
//从这里看出来,%rowtype定义的变量作用有点相似游标,  
//但是我们不能将%rowtype定义的变量当做游标来使用,  
//否则我们将会得到下面的错误:  
//ORA-01422: exact fetch returns more than requested number of rows  
declare v_dept dept%rowtype;  
begin  
     select deptno,dname,loc  
     into v_dept  
     from dept;  
     dbms_output.put_line(  
          'The data having been inserted.'||  
          'deptno:'||v_dept.deptno||  
          ',dname:'||v_dept.dname||  
          ',loc:'||v_dept.loc  
          );  
end;  
//  
//下面我们用游标来实现上面的操作,具体看下面的匿名块:  
declare  
       cursor cv_dept is 
       select *  
       from dept;  
begin  
     //变量v_dept不必我们显示声明  
     //for循环会为我们隐式的打开和关闭游标,不必我们现实的打开和关闭游标  
     for v_dept in cv_dept loop  
     dbms_output.put_line(  
          'deptno:'||v_dept.deptno||  
          ',dname:'||v_dept.dname||  
          ',loc:'||v_dept.loc  
          );  
      end loop;  
end;  
//  
deptno:111,dname:财务部,loc:福州  
deptno:120,dname:销售部,loc:大连  
deptno:130,dname:科研部,loc:北京  
PL/SQL procedure successfully completed 

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-04/35222.htm




分享到:
评论

相关推荐

    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE

    Oracle PL/SQL 中的 %TYPE 和 %ROWTYPE 应用详解 Oracle PL/SQL 是一种强大的编程语言,广泛应用于数据库开发中。在 PL/SQL 中,变量的声明和使用是非常重要的。其中,%TYPE 和 %ROWTYPE 是两个非常重要的概念,...

    PLSQL编程03

    总结来说,理解并熟练运用PL/SQL中的自定义复合变量、`%TYPE`和`%ROWTYPE`是提升Oracle数据库编程能力的关键步骤。通过它们,我们可以更加高效地管理数据,编写出更加灵活和健壮的PL/SQL程序。在实际项目中,这些...

    Oracle游标大全

    ### Oracle游标详解 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。...此外,掌握%TYPE、%ROWTYPE以及游标属性等高级特性,将进一步增强应用程序的功能性和灵活性。

    Oracle PL SQL经典练习题1.docx

    Oracle PL/SQL经典练习题 ...这些练习题涵盖了PL/SQL程序块的多方面知识点,包括变量声明、select into语句、dbms_output.put_line语句、异常处理、%type 属性、%rowtype 属性、update语句、if-elsif语句等。

    oracle PL-SQL 学习笔记1

    以上内容涵盖了Oracle PL-SQL中的一些基础且重要的知识点,包括变量声明与赋值、输出设置、表操作、使用`%TYPE`和`%ROWTYPE`、记录和集合的使用。通过掌握这些核心概念,开发者可以在Oracle数据库环境中更高效地编写...

    Oracle 游标使用大

    此外,我们还探讨了%TYPE和%ROWTYPE属性的用法,这有助于更灵活地处理Oracle数据库中的数据类型。 总之,熟练掌握Oracle游标及其相关属性的使用对于提高数据库应用程序的效率至关重要。希望本文能够为正在学习...

    oracle实验7-plsql编程基础.doc

    本实验旨在帮助学生掌握PL/SQL的基本概念和语法,包括变量的使用、%TYPE和%ROWTYPE特性,以及记录变量的操作。以下是对实验内容的详细解释: 一、PL/SQL程序块结构 PL/SQL程序块由声明部分(DECLARE)、执行部分...

    oracle进阶实例代码

    根据提供的标题、描述、标签及部分内容,我们可以提炼出Oracle数据库中的几个重要的知识点,这些知识点主要集中在存储过程(Stored Procedure)与函数(Function)的创建与使用上,同时也涉及到了游标(Cursor)的...

    PL/SQL 基础.doc

    TYPE t_emp IS TABLE OF s_emp%ROWTYPE INDEX BY BINARY_INTERGER; v_emp t_emp; BEGIN SELECT * INTO v_emp(100) FROM s_emp WHERE id = 1; SELECT * INTO v_emp(200) FROM s_emp WHERE id = 2; DBMS_...

    Oracle_plsql基本语法笔记.txt

    %type用法,%rowtype用法,TYPE用法 游标的使用 for 循环 loop循环 while循环 if / else 的用法 case 的用法 标题 错误定义 error的设定 exception用法 标题 存储过程及函数 procedure 的建立...

    PLSQL简介.pdf

    这种能力在Oracle的PL/SQL环境中尤为突出。 ##### 使用`%ROWTYPE`属性定义记录 通过使用`%ROWTYPE`属性,可以定义一个记录变量来表示表中的一行或多行,甚至是游标返回的行。这种方式的优势在于,不需要为表中的每...

    Oracle游标使用大全

    v_emp RECORD(c_employees%ROWTYPE); BEGIN OPEN c_employees; LOOP FETCH c_employees INTO v_emp; EXIT WHEN c_employees%NOTFOUND; -- 处理每行数据 DBMS_OUTPUT.PUT_LINE(v_emp.empno || ' ' || v_emp....

    Oracle-data-type.rar_oracle

    - `%TYPE`: 用于声明变量,使其与已有列的数据类型保持一致。 - `%ROWTYPE`: 声明一个记录类型,其结构与表的每一行相同。 8. **空值类型**: - `NULL`: 表示数据未知或未定义。 Oracle数据库还支持PL/SQL复合...

    Oracle plsql 基础ppt

    在PL/SQL中,`%TYPE`和`%ROWTYPE`是两个重要的特性。`%TYPE`用于声明变量与已存在表列的数据类型相同,如`v_ename emp.ename%type;`。`%ROWTYPE`则创建一个与指定表行结构完全匹配的记录变量,如`v_emp_rec emp%...

    Oracle---PL-SQL经典练习题1.doc

    ### Oracle—PL/SQL经典练习题解析 #### 练习题背景 在Oracle数据库系统中,PL/SQL(Procedural Language for SQL)是一种过程化的编程语言,它结合了SQL的强大功能与传统的过程化编程语言的功能,使得开发复杂的...

    oracle的游标使用

    `%ROWTYPE`是Oracle提供的一种特殊类型,可以用来存储一个表或视图的一行记录的所有列。例如,以下代码展示了如何使用`%ROWTYPE`来获取工资大于2000的员工信息,并按工资降序排列: ```sql DECLARE emp_row EMP%...

    oracle关于游标的相关文档

    1. 显式定义的记录:使用`TYPE`语句定义记录类型,如`TYPE my_record IS RECORD (column1 datatype, column2 datatype);`。 2. 面向表的记录:使用`%ROWTYPE`操作符创建,如`my_table_record my_table%ROWTYPE;`,它...

Global site tag (gtag.js) - Google Analytics