%type与%rowtype区别

更新时间:2023-07-17 04:57:24 阅读: 评论:0

%TYPE:属性的一种方式是在变量声明中使用。%TYPE是用于取的表或游标中的字段类型,
例如,可以使用它来声明和ARTIST表中字段类型相同的变量,注意可以在表中名和字段之间使用点号(.)。
心爱DEALARE 
V_UNIT_NAME   kwmis_xm_unit_bg.UNIT_NAME%TYPE;
V_BGOID   kwmis_xm_unit_bg.BGOID%TYPE;
通过这种方式就不需要明确指定SQL数据类型,从而改善了代码的可维护性,因为表中字段类型的改变会自动反映在PL/SQL中;

%ROWTYPE
使用%ROWTYPE属性可以声明一个基于表或游标的行对象,也称为记录对象,例如,可以基于ARTIST声明一个行对象:
declare
a一旦生成这条记录,那么就可以通过游标使用句号来提取newXmUnitBg的字段值,例如newXmUnitBg.UNIT_NAME 单位名称, newXmUnitBg.BGOID 变更申请号
cursor frdm_cursor  is SELECT FRDM_TZH FROM  kwmis_xm_unit_bg  WHERE bgoid=V_BGOID and     bg_flag='1'
 AND FRDM_TZH in(lect frdm from kwmis_unit_bainfo);
 begin
  OPEN frdm_cursor;
  LOOP
  FETCH frdm_cursor INTO v_frdm;
if  frdm_cursor%notfound  then   frdm_cursor%found
exit when frdm_cursor%notfound   frdm_cursor%found
%TYPE是跟表中的字段的类型一致all the way,是变量类型.%ROWTYPE是跟表中的行类型一致,record类型.
 
 
我是搞Java,看到DBA的存储过程这样写,不知是什么意思,Oracle朋友讲解一下
  create  or  replace  procedure  sp_update_customer 
    is 
    v_c_rowvalue              t_customer_info%rowtype; 
    v_p_rorvalue              t_product_info%rowtype; 
    v_customer_id        t_customer_info.customer_id%type; 
  ========================================================== 
  %rowtype是指什么意思呀,我知道t_customer_info是一个table来的.
 
%ROWTYPE  提供了一个对应特定表的一整行的复合类型
v_c_rowvalue              t_customer_info%rowtype; 
  表示,v_c_rowvalue  将具有    t_customer_info  相同的行结构,可以存放以行数据。 
  使用时  v_lname即可。
使用%ROWTYPE属性 
  /*使用%ROWTYPE属性*/ 
  /*%ROWTYPE属性声明的记录变量自动具有和引用表的列名一致的字段名*/ 
   
  DECLARE 
  lPart  tb_phone_no%ROWTYPE; 
  BEGIN 
  SELECT  phone_no,city_code,city_name,state,type   
zzia  INTO  lPart 
  FROM  tb_phone_no 
  WHERE  phone_no='1333241'; 
  DBMS_OUTPUT.PUT_LINE('phone_no:'  ||  lPart.phone_no  || 
  '  city_code:'  ||  lPart.city_code  || 
  '  city_name:'  ||  lPart.city_name  || 
  '  state:'  ||  lPart.state  || 
  '  type:'  ||  pe); 
  END; 
   
  ------------------------------ 
  SQL>  desc  tb_phone_no; 
  名称                                                    是否为空?类型 
  -------------------------------  --------  ---- 
    PHONE_NO                                                NOT  NULL  VARCHAR2(7) 
    CITY_CODE                                              NOT  NULL  VARCHAR2(4) 
    CITY_NAME                                              NOT  NULL  VARCHAR2(8) 
    STATE                                                      NOT  NULL  VARCHAR2(6) 
    TYPE                                                        NOT  NULL  VARCHAR2(6)   
 
 
Oracle PL/SQL中如何使用%TYPE月份英文12个%ROWTYPE
Oracle PL/SQL中如何使用%TYPE%ROWTYPE
1. 使用%TYPE
physics是什么意思
在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量:
DECLARE
      v_FirstName VARCHAR2(20);
但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修改。如果你有很多的PL/SQL代码,这种处理可能是十分耗时和容易出错的。
这时,你可以使用%TYPE”属性而不是将变量类型硬性编码。
例如:
DECLARE otherthan
      v_FirstName students.first_name%TYPE;
葫芦丝培训通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者邦定起来)。
每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。
使用%TYPE是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。
2. 使用%ROWTYPE
2.1 PL/SQL记录
PL/SQL记录类型类似于C语言中的结构,是一种复合类型,是用户自定义的。
记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。请看:
DECLARE
      v_StudentID NUMBER(5);
货到付款什么意思
      v_FirstName VARCHAR2(20);
美伊拳击>李娜赛后采访      v_LastName VARCHAR2(20);

本文发布于:2023-07-17 04:57:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1100856.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   变量   记录
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图