我在SQL环境中要求在特定情况下,对过程中对表(或视图)A的所有引用实际上都使用表(或视图)B。在iSeries上我会使用OVRDBF命令覆盖引用表A与表B:OVRDBF文件(A)文件(B)。在SQL中与此相同的是什么?有吗?
我的目标是最终得到一个不知道覆盖的程序。我不希望在满足某些条件时指示表B处理的过程中的条件逻辑。愿景:
在典型情况下:只需调用程序
即可在特定的替代情况下:执行等效的OVRDBF,然后调用过程
答案 0 :(得分:1)
不确定哪个SQL环境支持哪些选项:
我相信DB2有一个CREATE ALIAS语句。在别名上写SQL。
另一种可能性:对视图运行查询:在哪里执行OVRDBF,删除视图并在所需的表上重建它。
答案 1 :(得分: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;