2012-01-06 85 views
0

我的項目我有一個會話變量,該變量包含最近訪問的值列表。藉助於這些值,我需要從數據庫中獲取數據。爲此,我寫了一個帶有單個參數(@myparam)的存儲過程,但它只能從表中提供一行。 如何使用存儲過程的會話列表從表中獲取行的列表?如何在存儲過程中使用會話列表獲取行的列表

+0

目前尚不清楚 - 這正是你所需要的,舉個例子 – 2012-01-06 06:50:12

+0

我passig會話列表我storedproc從表範例中得到行:PARAMATERS .Add(getParam(「@ recentAssetList」,DbType.AnsiString,recentAssetList)); return executeDataset(「xp_ListRecentAssets」,paramaters);在這個「recentAssetList」包含從會話中獲得的值列表 – 2012-01-06 06:55:05

+0

仍然不清楚 - 你問如何從sp返回一個結果集 - 據我所知 - 你已經打電話像executeDataset - 這正如我所假設 - 將返回一個表(s) – 2012-01-06 06:58:04

回答

0

如果我理解你的權利,試試這個

CREATE function [dbo].[csv2tbl](@list nvarchar(max), @delimiter nvarchar(10)) 
returns @res table ([index] int PRIMARY KEY, col nvarchar(max)) 
AS BEGIN 
with tbl_for_csv as 
(
select 0 as [index] ,left(@list + @[email protected],charindex(@delimiter,@list + @[email protected]) -1)as col, 
right(@list + @[email protected],len(@list + @[email protected]) - charindex(@delimiter,@list + @[email protected])) as Str 
union all 
select [index]+1, left(Str,charindex(@delimiter,Str) - 1)as Col, 
right(Str,len(Str) - charindex(@delimiter,Str)) from tbl_for_csv 
where len(right(Str,len(Str) - charindex(@delimiter,Str))) > 0 
) 
INSERT @res 
select [index], col from tbl_for_csv option (MAXRECURSION 0); 
return; 
END 
GO 
SELECT * 
from YourTable 
JOIN [dbo].[csv2tbl](@recentAssetList, ',') x ON x.col = yourtable.Id 
+0

感謝您的重播,但我希望下面的存儲過程是我的代碼:recentAssetList = SessionData.RecentAssetList;(例如:recentAssetList = 1,2,3,4 ..)grdRecentAssetList.DataSource = DataAccess.ListRecentAssets(recentAssetList); grdRecentAssetList.DataBind();在DataAccess類中:public static DataSet ListRecentAssets(string recentAssetList){try {ArrayList paramaters = getParamArray(); paramaters.Add(getParam(「@ recentAssetList」,DbType.AnsiString,recentAssetList)); return executeDataset(「xp_ListRecentAssets」,paramaters); } – 2012-01-06 08:17:17

相關問題