1

我在 DB2 存储过程中有一些 SQL 查询,其中包含非常复杂的 where 子句,这些子句难以阅读、维护,并且无法在不复制和粘贴的情况下跨 select 语句共享。我曾经编写动态 SQL 并将 where 子句的各个部分单独连接起来,这至少使逻辑更清晰。有没有办法在没有动态 SQL 的情况下做到这一点?我正在考虑用户定义的函数,但它们太重了,可能太慢了。有任何想法吗?

4

1 回答 1

0

如果可以在查询之前确定任何子句(即:基于传递给存储过程的参数),则该子句的结果可以存储在变量中,然后在查询中使用该变量。为了与其他存储过程共享,您可以将其提取到单独的存储过程中。

任何不基于存储过程参数的子句都可以提取到视图中。然后,所有存储过程都可以使用实际参数查询视图。请注意,这可能比单个 SQL 语句慢,特别是如果您可以在连接之前显着缩小表中的行范围。

除此之外,我相信您会坚持使用动态 SQL 或复制/粘贴。

于 2012-10-02T15:53:45.883 回答