TSQL:两个选择的联合结果(过程?)

发布于 2024-08-17 11:28:41 字数 275 浏览 7 评论 0原文

我有两个过程 - 两组巨大的选择以及几个子选择和联合。 我需要合并这些过程的结果,但我仍然需要它们单独存在。

类似这样的事情:

if @Param = 1 Then 
    PROCEDURE1
if @Param = 2 THEN 
    PROCEDURE2
if @Param = 3 Then
    PROCEDURE1 union PROCEDURE2

我读到不可能在过程上有联合,并且我不能使用临时表。

有什么想法吗?

I have two procedures - two huge sets of selects with several sub-select and unions.
I need to union results from these procedures and I still need them to exists separately.

Something like that:

if @Param = 1 Then 
    PROCEDURE1
if @Param = 2 THEN 
    PROCEDURE2
if @Param = 3 Then
    PROCEDURE1 union PROCEDURE2

I read that it's impossible to have union on procedures and I can't use temporary tables.

Any idea?

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

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

发布评论

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

评论(4

逆光下的微笑 2024-08-24 11:28:41

您可以将过程转换为视图。

或者

您可以将过程执行到临时表中,然后将另一个过程执行到同一个临时表中:

create table #sometable (table definition here)

if @Param = 1 or @Param = 3 begin
    insert #sometable exec PROCEDURE1
end

if @Param = 2 or @Param = 3 begin
    insert #sometable exec PROCEDURE2
end

select * from #sometable

You can convert the procedures to views.

OR

You can exec the procedures into a temp table, and then exec the other one into the same temp table:

create table #sometable (table definition here)

if @Param = 1 or @Param = 3 begin
    insert #sometable exec PROCEDURE1
end

if @Param = 2 or @Param = 3 begin
    insert #sometable exec PROCEDURE2
end

select * from #sometable
孤蝉 2024-08-24 11:28:41

您可以:

1)将数据插入临时表,然后从中选择:

--Define #t here, with correct schema to match results returned by each sproc
INSERT #t EXECUTE PROC1
INSERT #t EXECUTE PROC2
SELECT * FROM #t

2)只需从存储过程返回2个结果集,并让您的调用代码处理2个结果集

You could either:

1) Insert the data into a temp table then SELECT from that:

--Define #t here, with correct schema to match results returned by each sproc
INSERT #t EXECUTE PROC1
INSERT #t EXECUTE PROC2
SELECT * FROM #t

2) Just return 2 resultsets from the sproc and let your calling code handle 2 resultsets

雪花飘飘的天空 2024-08-24 11:28:41

有多种方法可以处理这种情况:

  1. 表值用户定义函数 (UDF)
  2. 视图
  3. 动态 SQL
  4. 临时表

该问题缺乏具体细节,因此很难推荐一个而不是另一个,更不用说提供量身定制的答案了。该逻辑可以在单个查询中执行是合理的。

There are various ways to handle the situation:

  1. Table-Valued User Defined Functions (UDFs)
  2. Views
  3. Dynamic SQL
  4. Temp tables

The question lacks concrete details so it's hard to recommend one over another, much less provide a tailored answer. It's plausible that the logic could be performed within a single query.

水波映月 2024-08-24 11:28:41

如果不使用临时表,我只能想到其他两种方法。

  1. 如果可能,将 s'procs 转换为视图。

  2. 将调用哪个过程的逻辑移至您的应用程序(如果存在)。让它单独运行每个过程并合并结果。

Without the use of temp tables there are only two other ways that I can think of.

  1. Convert the s'procs to views, if possible.

  2. Move the logic on which proc to call to your application (if one exists). Have it run each proc separately and combine the results.

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