我創建了存儲過程,以便用戶可以將多個逗號分隔值選擇爲單個參數。光標循環不起作用。只取參數中的最後一個值?
這裏我在循環這些值時遇到了一些問題。這裏是代碼
Alter PROCEDURE [dbo].[Testing] @Databases varchar(4096)
AS Begin
SET NOCOUNT ON;
Declare @cnt varchar(500)
Declare @sql varchar(Max) = ''
Declare @DB varchar(50)
;WITH MyCTE
AS (SELECT * FROM [dbo].[fnSplitStringList] (@Databases))
select * into #temp from MyCTE
DECLARE tenant_cursor CURSOR FOR
select * from #temp
OPEN tenant_cursor;
FETCH NEXT FROM tenant_cursor INTO @cnt;
WHILE @@FETCH_STATUS = 0
BEGIN
select @DB = dbname from CountryLookup where dbName = @cnt
if @sql = ''
Begin
SET @sql = 'select C1, C2, C3
from ' + @DB + '.dbo.T1
inner join DB1.T2 on T1.C4 = T2.C4
'
End
Else
Begin
SET @sql = 'select C1, C2, C3
from ' + @DB + '.dbo.T1
inner join DB1.T2 on T1.C4 = T2.C4
'
End
FETCH NEXT FROM tenant_cursor INTO @cnt;
END
CLOSE tenant_cursor;
DEALLOCATE tenant_cursor;
Drop table #temp
exec (@sql)
END
現在,當我執行我的PROC象exec [DBO]。[測試]「美國,日本,法國
它只是讓我記錄了法國。
有人能幫我解決我錯的地方嗎?
感謝它的工作 – Ritesh
現在,當我使用此proc到我的ssrs報告中時,它不會給我多個值的記錄。 – Ritesh
得到了解決方案。只是想對你的方法做一點改變。如果你不想讓結果中斷,那麼就這樣做。 – Ritesh