2013-03-07 53 views

回答

3

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; 

那么你的代码都难,因为当你运行它甲骨文将重新编译过程,检测型号。

+0

感谢您的宝贵答案! DCookie。 – PhatHV 2013-03-07 03:06:51

相关问题