存储过程和拆分功能.....如何

时间:2013-08-16 09:17:57

标签: sql-server-2008 function split

我有一个存储过程将RS报告参数保存到表中,用户运行报告及其选择,并保存以供日后检索。它一切顺利,直到我不得不将其切换到多选参数。

这是因为它存储了像

这样的参数
  

价值,价值,价值

。因此,当涉及到检索时,它只能看到表中的字符串。我需要做的是在将参数保存到表中时拆分参数。我已经掌握了一个函数来执行此操作,但我正在努力将其实现到存储过程中。

它是一个插入savename,para1,para2的基本存储过程。希望我没有太模糊!

2 个答案:

答案 0 :(得分:0)

您可以拆分多个这样的值,#Table存储您需要的值

    CREATE TABLE #Table (Value VARCHAR(MAX))
    DECLARE @Values VARCHAR(MAX) = (select StringStoredValue from TableName)
    SET @Values = 'INSERT INTO #Table SELECT ' + REPLACE(@Values, ',',' UNION SELECT ')
    EXEC(@Values)
    --Here you can do join with #Table and find those values which required
    SELECT * FROM #Table 
    DROP TABLE #Table

答案 1 :(得分:0)

Declare @N  int
Declare @Temp varchar(max)
Declare @Count int

Declare @Tempdata
(
Id int,
Splitval varchar(max)

)
Insert into @Tempdata
select * from [dbo].[split]('@Parameter',',')

set @Count = select * from @Tempdata

set @N=1
while @N<=@Count
begin
set @Temp=select Splitval from @Tempdata

Insert into Tablename(parameter)
values(@Parameter)

@N=@N+1;
end