Stored procedures 如何打印SQL Server 2008 R2中存储过程中传递的所有参数
我有一个存储过程,它接受Stored procedures 如何打印SQL Server 2008 R2中存储过程中传递的所有参数,stored-procedures,sql-server-2008-r2,Stored Procedures,Sql Server 2008 R2,我有一个存储过程,它接受varchar(max)类型的参数。我的用户应该能够传递单个参数以及多个参数(用逗号分隔)。如果传递了单个参数,则我的存储过程应打印单个值;如果传递了多个参数,则应打印多个值 例如,我的过程名是sp\u printvalue。如果我用一个参数执行这个过程 exec sp_printvalue A 它应该打印一个,如果我用多个参数执行它 exec sp_printvalue A,B,C,D 它应该打印所有值A B C D 请帮我完成这项任务。提前感谢。您可以传递一个xm
varchar(max)
类型的参数。我的用户应该能够传递单个参数以及多个参数(用逗号分隔)。如果传递了单个参数,则我的存储过程应打印单个值;如果传递了多个参数,则应打印多个值
例如,我的过程名是sp\u printvalue
。如果我用一个参数执行这个过程
exec sp_printvalue A
它应该打印一个,如果我用多个参数执行它
exec sp_printvalue A,B,C,D
它应该打印所有值A B C D
请帮我完成这项任务。提前感谢。您可以传递一个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
declare@a xml
设置@a=N'
'
执行usp_打印值@a
旁注:您不应该在存储过程中使用sp
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用sp.
并使用其他东西作为前缀,或者根本不使用前缀!