2

我有以下对象:

CREATE FUNCTION CONSTFUNC RETURN INT
DETERMINISTIC
AS
BEGIN
RETURN 1;
END;

CREATE TABLE "FUNCTABLE" (
  "ID" NUMBER(*,0) NOT NULL,
  "VIRT" NUMBER GENERATED ALWAYS AS ("CONSTFUNC"()) NULL
);

但是, functable => constfunc 依赖项未列在 all_ 或 user_ 依赖项中。有没有我可以在字典中访问此依赖信息的地方?

4

2 回答 2

1

我刚刚在 11G (11.1) 中创建了你的函数和表,可以确认你的发现。我在 Oracle 文档中也找不到任何内容。

如果删除该函数,表状态仍为“VALID”,但当您从表中选择时,您会得到 ORA-00904:“CHAMP”。“CONSTFUNC”:无效标识符。这表明 Oracle 本身并没有意识到这种依赖关系。

在 asktom.oracle.com 上提出这个问题可能是值得的,因为 Tom Kyte 将可以访问更多信息 - 如果需要,他甚至可能会提出一个错误。

于 2009-11-13T12:48:14.493 回答
0

用于生成虚拟列的表达式列在 [DBA|ALL|USER]_TAB_COLUMNS 视图的 DATA_DEFAULT 列中。

于 2009-11-13T12:23:00.837 回答