2012-01-06 73 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

相关问题