Sql server 2005 将2个存储过程连接到另一个存储过程中
我有两个存储过程用于实例test1和test2,它们都使用相同的参数X 在这两个存储过程中,X都是if语句的一部分,基本上它告诉过程选择哪个select语句。(这不重要,因为这是一个参数,但我不确定) 我希望test1和test2通过列名连接,因为它们都有列名,我希望它们并排链接,而不是一个在另一个下面,这是可能的吗 基本上,我想将这两个存储过程连接到我的asp.net程序将调用的另一个存储过程中 这是存储过程(sp_当前)Sql server 2005 将2个存储过程连接到另一个存储过程中,sql-server-2005,stored-procedures,Sql Server 2005,Stored Procedures,我有两个存储过程用于实例test1和test2,它们都使用相同的参数X 在这两个存储过程中,X都是if语句的一部分,基本上它告诉过程选择哪个select语句。(这不重要,因为这是一个参数,但我不确定) 我希望test1和test2通过列名连接,因为它们都有列名,我希望它们并排链接,而不是一个在另一个下面,这是可能的吗 基本上,我想将这两个存储过程连接到我的asp.net程序将调用的另一个存储过程中 这是存储过程(sp_当前) @mode varchar(20) 作为 不计较 声明@Booked
@mode varchar(20)
作为
不计较
声明@Booked Int
Set@Booked=CONVERT(int,DateAdd(year,(year(getdate()))-year(getdate()+1),
DateAdd(day,DateDiff(day,1,getdate()),1)))
如果@mode='Sales'
挑选
分部,
SDESCR,
DYYYY,
Sum(Case When book您的问题有点不确定。我猜这两个过程都返回一个结果集,您希望返回这些结果集的联接
您可以定义临时表或表变量并使用
INSERT INTO table_1 exec sp_1 ...
INSERT INTO table_2 exec sp_2 ...
然后可以从这两个临时对象的连接中进行选择
编辑:
不知道数据类型,让我尝试以下方法
create table #tmp1 (
Division varchar(50),
SDESCR varchar850),
DYYYY varchar(5),
currentNetSales money,
currentPax money
)
create table #tmp2 (
Division varchar(50),
SDESCR varchar(50),
DYYYY varchar(5),
ASofNetSales money,
YENetSales money,
ASofPAX money,
YEPAX money
)
INSERT INTO #tmp1 exec sp_current ('Sales')
INSERT INTO #tmp2 exec sp_compare ('Sales', 2009)
select t1.Division,
isnull(t1.SDESCR, t2.SDESCR) SDESCR,
isnull(t1.DYYYY, t2.DYYYY) DYYYY,
t1.currentNetSales,
t1.currentPax,
t2.ASofNetSales money,
t2.YENetSales money,
t2.ASofPAX money,
t2.YEPAX money
from #tmp1 t1
full outer join #tmp2 t2 on t1.Division = t2.Division and t1.SDESCR = t2.SDESCR
Order By Division, SDESCR
我再给我的表加一些question@MyHeadHurts-根据bernd_k的回答,可能更值得添加一个示例,例如,显示一些可能的示例“这些是sp1中的行”、“这些是sp2中的行”、“这是我想要返回的结果”是的,我想与其把它们放在单独的过程中,不如试着把它们放在一个大的过程中,如果你能帮忙的话,那就太好了。让它们成为表值函数而不是存储过程,然后你就可以加入它们了。这可能会非常低效,尽管它们似乎都在使用同一个表。
INSERT INTO table_1 exec sp_1 ...
INSERT INTO table_2 exec sp_2 ...
create table #tmp1 (
Division varchar(50),
SDESCR varchar850),
DYYYY varchar(5),
currentNetSales money,
currentPax money
)
create table #tmp2 (
Division varchar(50),
SDESCR varchar(50),
DYYYY varchar(5),
ASofNetSales money,
YENetSales money,
ASofPAX money,
YEPAX money
)
INSERT INTO #tmp1 exec sp_current ('Sales')
INSERT INTO #tmp2 exec sp_compare ('Sales', 2009)
select t1.Division,
isnull(t1.SDESCR, t2.SDESCR) SDESCR,
isnull(t1.DYYYY, t2.DYYYY) DYYYY,
t1.currentNetSales,
t1.currentPax,
t2.ASofNetSales money,
t2.YENetSales money,
t2.ASofPAX money,
t2.YEPAX money
from #tmp1 t1
full outer join #tmp2 t2 on t1.Division = t2.Division and t1.SDESCR = t2.SDESCR
Order By Division, SDESCR