Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 将2个存储过程连接到另一个存储过程中_Sql Server 2005_Stored Procedures - Fatal编程技术网

Sql server 2005 将2个存储过程连接到另一个存储过程中

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

我有两个存储过程用于实例test1和test2,它们都使用相同的参数X

在这两个存储过程中,X都是if语句的一部分,基本上它告诉过程选择哪个select语句。(这不重要,因为这是一个参数,但我不确定)

我希望test1和test2通过列名连接,因为它们都有列名,我希望它们并排链接,而不是一个在另一个下面,这是可能的吗

基本上,我想将这两个存储过程连接到我的asp.net程序将调用的另一个存储过程中

这是存储过程(sp_当前)

@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