2

我在 SQL 环境中有一个要求,即在特定情况下,过程中对表(或视图)A 的所有引用实际上都使用表(或视图)B。在 iSeries 上,我会使用 OVRDBF 命令覆盖对表 A 的引用使用表 B:OVRDBF FILE(A) TOFILE(B)。在 SQL 中与此等价的是什么?有吗?

我的目标是最终得到一个不知道覆盖的程序。当满足某些条件时,我不希望在过程中引导处理表 B 的条件逻辑。愿景:

在典型情况下:只需调用该过程

在特定的替代情况下:执行等效的 OVRDBF,然后调用过程

4

2 回答 2

1

不确定哪个 SQL 环境支持哪些选项:

我相信 DB2 有一个 CREATE ALIAS 语句。在别名上写入 SQL。

另一种可能性:在视图上运行查询:您将在其中执行 OVRDBF,删除视图并在所需表上重建它。

于 2009-02-04T18:20:02.590 回答
1

正如 Ed 提到的,如果您可以修改您的程序:

1)为文件(A)创建别名

CREATE ALIAS XYZ FOR A

2) 修改程序以参考 XYZ 而不是 A。

3) 运行程序时使用文件 B 执行

DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR B;
CALL PROCEDURE;
DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR A;

如果您无法修改该过程并且您不担心同时访问表 A,您可以使用:

RENAME TABLE A TO C;
CREATE ALIAS A FOR B;
CALL PROCEDURE;
DROP ALIAS A;
RENAME TABLE C TO A;
于 2009-02-05T22:24:54.590 回答