0

如果我的数据库中有超过 200 个表,我应该使用 %TYPE 引用而不是标准数据类型吗?

与标准数据类型相比,使用 %TYPE 会降低性能吗?

我是 Oracle 的新手,也许这个问题很基础,但我认为这对像我这样的新手来说非常重要。

4

1 回答 1

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;

然后你的代码是免疫的,因为 Oracle 会在你运行它时重新编译过程,检测 TYPE 引用。

于 2013-03-07T02:50:31.617 回答