SQL 中是否有与 iSeries OVDBF 命令等效的命令?

发布于 2024-07-13 22:28:39 字数 283 浏览 6 评论 0原文

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

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

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

在特定替代情况下:执行 OVDBF 等效操作,然后调用该过程

I have a requirement in a SQL environment that under specific circumstances, all references to table (or view) A in a procedure actually use table (or view) B. On the iSeries I would have used the OVRDBF command to override references to table A with table B: OVRDBF FILE(A) TOFILE(B). What would be the equivalent to this in SQL? Is there one?

My goal is to end up with a procedure that is ignorant of the override. I don't want conditional logic inside the procedure that directs processing at table B when certain conditions are met. The vision:

Under typical circumstances: Just invoke the procedure

Under specific alternative circumstances: Perform the OVRDBF equivalent and then Invoke the procedure

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

昔日梦未散 2024-07-20 22:28:39

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

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

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

Not sure which SQL environment support which options:

I believe DB2 has a CREATE ALIAS statement. Write the SQL over the alias.

Another possibility: run your queries over views: where you would do the OVRDBF, drop the view and rebuild it over the desired table.

陌生 2024-07-20 22:28:39

正如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;

As Ed mentions if you can modify your procedure:

1) Create an alias for file(A)

CREATE ALIAS XYZ FOR A

2) Modify the procedure to reference XYZ instead of A.

3) When running the procedure to use file B execute

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

If you can't modify the procedure and you're not worried about simultaneous access to table A you could use:

RENAME TABLE A TO C;
CREATE ALIAS A FOR B;
CALL PROCEDURE;
DROP ALIAS A;
RENAME TABLE C TO A;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文