在oracle中表现更好
declare
debit credit%TYPE;
begin
....
end;
or
declare
debit number(10,2);
begin
...
end;
第一个块是否会引用表来获取每次执行时的数据类型,或者只执行一次。
答案 0 :(得分:2)
没有性能差异。两个引用都在编译时解析。锚定类型在编译时可能需要花费更多的时间来解析,但是您不太可能特别关注编译性能,并且您不太可能测量执行该查找所需的时间。
不同之处在于,在第一种情况下,当有人修改列的数据类型时,您的块将被重新编译(您的锚定类型必须是table.column%type
,因此您的块实际上不是有效的)。在第二种情况下,当有人修改基础列的数据类型时,他们必须梳理查询表的每一段代码以进行相同的更改。因此,使用锚定类型更具可持续性。