oracle中%类型和数据类型之间的区别

时间:2016-03-28 21:22:11

标签: oracle plsql

在oracle中表现更好

declare
debit credit%TYPE; 
begin
....
end;

or

declare
debit number(10,2);
begin
...
end;

第一个块是否会引用表来获取每次执行时的数据类型,或者只执行一次。

1 个答案:

答案 0 :(得分:2)

没有性能差异。两个引用都在编译时解析。锚定类型在编译时可能需要花费更多的时间来解析,但是您不太可能特别关注编译性能,并且您不太可能测量执行该查找所需的时间。

不同之处在于,在第一种情况下,当有人修改列的数据类型时,您的块将被重新编译(您的锚定类型必须是table.column%type,因此您的块实际上不是有效的)。在第二种情况下,当有人修改基础列的数据类型时,他们必须梳理查询表的每一段代码以进行相同的更改。因此,使用锚定类型更具可持续性。