作为一位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/
,如需转载,请注明出处,否则将追究法律责任。