存储过程嵌套调用问题
我共有两个存储过程分别简单描述为如下
usp_P1
as
declare @dd1 as datetime
declare @dd2 as datetime
……
……
select @dd1 as dd1 , @dd2 as dd2
go
usp_P2
as
…………
exec usp_P1
…………
在此处要利用usp_P1中的dd1和dd2值,该如何调用呢?
go
------解决方案--------------------create table #tmp(dd1 ???, dd2 ???)
insert #tmp exec usp_P1
------解决方案--------------------usp_P1
as
declare @dd1 as datetime
declare @dd2 as datetime
……
……
select @dd1 as dd1 , @dd2 as dd2
##TempTableName
go
usp_P2
as
…………
exec usp_P1
…………
-- 在此处要利用usp_P1中的dd1和dd2值,可以直接用#TempTableName表调用,
-- 如:select dd1,dd2 from #TempTableName
go
------解决方案--------------------两种类方法,一种方式你创建一个临时表,将执行完存储过程返回的结果集插入到临时表。之后,你对临时表进行操作
create table #t()
insert into #t exec proName
select * from #t
另一种方法是直接利用上一个存储过程的结果集
select * from openrowset( 'sqloledb ', 'Trusted_Connection=yes ', 'exec Northwind.dbo.CustOrderHist ALFKI ')