ITPub博客

首页 > 数据库 > Oracle > 学习PL/SQL程式开发(一)

学习PL/SQL程式开发(一)

原创 Oracle 作者:lby950 时间:2014-10-23 20:29:15 0 删除 编辑
作为一位Oracle ERP系统的维护人员,学习oracle开发维护有一年多了,之前也没有认真的看过oracle相关的书,都是根据前辈们的程序模仿学习的,最近开始看这方面的书了,发现了很多实用的知识和方法,在这里将这些内容整理出来,与大家一起学习探讨。
    (1)%TYPE属性
        在开发程式中会经常使用变量来做存储计算,声明一个变量时要对变量的类型进行定义,
        例如: declare
                       v_No  number(15);   --学号
        程式中我们可能会从学生信息表t_student中查询出一个学号赋给v_No,前提是表中的学号类型要与变量类型一致,但是如果以后客户要求学号的长度增加为20,或者学号不再是单纯的数字类型,要求是字母加数字 varchar2型,那么我们就要去修改t_student中的学号的类型,同时要把所有程式中类似v_No的变量类型都修改,这样会很麻烦,而且你很难知道那些程式需要做调整,可能只有出错了你才会发现。
        %TYPE就可以很好的解决这一问题,因为它直接引用数据列的类型作为变量的类型,这样如果列的类型做了改变,那么也不会有影响。
        将上面的定义变量改为使用%TYPE :
                  declare
                        v_No  t_student.no%TYPE;
     总结:使用%TYPE也不是毫无缺点,首先我们看代码时无法一目了然看出v_No的类型是什么,不过这个不是很重要,至少我们可以备注出来;对于数据库来说,它要从数据字典中才能查看数据类型,可能在性能上会有一些影响,不过总的来说应该是优点比较大,至少麻麻再也不用担心我修改数据类型了 哈哈。

    (2)%ROWTYPE属性
        %ROWTYPE为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据。
        例如: declare
                        v_student  t_student%ROWTYPE;  --学生信息表
                  begin
                        select * 
                        into v_student
                        from t_student
                        where grade = 3;
                  DBMS_OUTPUT.PUT_LINE('学号:'||v_student.no);
                  DBMS_OUTPUT.PUT_LINE('姓名:'||v_student.name);
                  DBMS_OUTPUT.PUT_LINE('性別:'||v_student.sex);
                  end;
        有了%ROWTYPE,我们不需要对每一个列去声明变量,只需一个%ROWTYPE类型的v_student就可以了,select * 语句将整行的数据存放到v_student中,%ROWTYPE特性可以极大的简化与数据库结构修改有关的代码维护工作,非常实用。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28460218/viewspace-1308375/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-07-31

  • 博文量
    1
  • 访问量
    2414