【发布时间】:2017-05-08 20:54:39
【问题描述】:
我有一个带有一个参数的过程,letsay @AssetID int。
我想从另一个表中选择一个列值,然后将该值用作此过程的参数。
我已经存储了类似这样的过程,并且该表已使用来自 @AssetID 参数的“Where”条件进行过滤:
declare @inspectyear as nvarchar(max), @calc as nvarchar(max), @query as nvarchar(max);
set @inspectyear = STUFF((select distinct ',' + quotename(InspectYear) from ##t2 c
for XML path(''), type).value('.','NVARCHAR(MAX)'),1,1,'')
select @calc = ', ' + quotename(Max(InspectYear)) + ' - ' + quotename(Max(InspectYear)-2)
+ ' as Calc1, ' + quotename(Max(InspectYear)) + ' - ' + quotename(min(InspectYear))
+ ' as Calc2' from #t2;
set @query =
';with data as
(
select inspectyear,
partno, Pos, number
from #t2
unpivot
(
number
for Pos in ([Pos1], [Pos2], [Pos3], [Pos4])
) unpvt
)
select * ' + @calc + ' into ##temp
from data
pivot
(
sum(number)
for inspectyear in (' + @inspectyear + ')
) pvt
order by partno';
exec sp_executesql @query = @query;
select * from ##temp;
drop table ##temp;
所以我需要创建另一个过程,例如:
create procedure spExecmyProc
as
begin
exec spMyProc '@AssetID' -- <-- The parameter took from other table.
go
end
@date 参数,取自其他表。
有可能做到吗?结果应该只有一个结果。
到目前为止,这就是我所做的。它有效,但结果不是“一个结果”。如果@AssetID 不止一个,它会创建多个结果:
declare @AssetID int;
declare cur CURSOR FOR
select distinct AssetID from myTable
open cur
fetch next from cur into @AssetID
while @@FETCH_STATUS = 0
begin
exec mySPName @AssetID
fetch next from cur into @AssetID
end
close cur
DEALLOCATE cur
谢谢。
【问题讨论】:
-
你能声明一个变量,将该表中的值存储在变量中并将变量作为参数传递给你的SP吗?
-
@shree.pat18,不知道该怎么做。但我会编辑我的问题。
标签: sql stored-procedures sql-server-2008-r2