0
如果我的数据库中有200多个表,我应该使用%TYPE引用而不是标准数据类型吗?我应该使用%TYPE引用代替Oracle中的标准数据类型吗?
当我使用%TYPE与标准数据类型比较时性能下降吗?
我是Oracle的新手,也许这个问题很基本,但我认为这对于像我这样的新手来说非常重要。
如果我的数据库中有200多个表,我应该使用%TYPE引用而不是标准数据类型吗?我应该使用%TYPE引用代替Oracle中的标准数据类型吗?
当我使用%TYPE与标准数据类型比较时性能下降吗?
我是Oracle的新手,也许这个问题很基本,但我认为这对于像我这样的新手来说非常重要。
TYPE关键字在编译时解析并且对性能没有影响。
您应该努力在可能的地方使用它,因为它可以在您存储的程序和对象中创建灵活性。当引用的对象发生变化并且引用它的程序使用TYPE引用时,程序会自动为调用者提供更改 - 只需重新编译并使用新定义即可。使用非TYPE引用时,程序可能会中断,因为定义的字段类型对于引用列而言变得太大。
举例来说,如果我有一个简单的表:
CREATE TABLE A (I1 INTEGER, C1 VARCHAR2(10));
我有一个存储过程,从该表上写着:
PROCEDURE P
var VARCHAR2(10);
BEGIN
SELECT C1 INTO var FROM A WHERE I1 = 1;
END;
这工作,直到您修改长度,时间列:
ALTER TABLE A MODIFY C1 VARCHAR2(20);
现在你可以从你的选择中得到一个错误。
如果你写的程序是这样的:
PROCEDURE P
var A.C1%TYPE;
BEGIN
SELECT C1 INTO var FROM A WHERE I1 = 1;
END;
那么你的代码都难,因为当你运行它甲骨文将重新编译过程,检测型号。
感谢您的宝贵答案! DCookie。 – PhatHV 2013-03-07 03:06:51