0

我有一个存储过程,它需要一个varchar(max)类型的参数。我的用户应该能够传递单个参数以及多个参数(以逗号分隔)。如果传递了单个参数,我的存储过程应该打印单个值,如果传递了多个参数,则应该打印多个值。

例如我的程序名称是sp_printvalue. 因此,如果我使用单个参数执行此过程

exec sp_printvalue A

它应该打印 A 并且如果我使用多个参数执行它

exec sp_printvalue A,B,C,D

它应该打印所有值 ABC D。

请帮助我完成这项任务。提前致谢。

4

1 回答 1

0

您可以传递一个 xml 参数,然后使用 node 方法读取它。这是一个例子

create procedure usp_PrintValue
@param xml
as
set nocount on;

declare @result varchar(100)

select
    @result = coalesce(@result + ', ', '') + tab.col.value('@Value', 'char(1)')
from @param.nodes('/Parameter') as tab(col)

print @result
go

和执行

declare @a xml

set @a = N'
    <Parameter Value="A"/>
    <Parameter Value="B"/>
    <Parameter Value="C"/>
    <Parameter Value="D"/>
'

exec usp_PrintValue @a
于 2013-09-03T08:44:30.810 回答