2017-06-05 87 views
0

目前,我有,我要承担的参数的灵活数量的存储过程。有谁知道这是否可能?改变储存过程

ALTER PROCEDURE myStoredProc 
    (@variable1 INT, 
    @variable2 INT, 
    @variable3 INT) 

上面的例子,我有3个参数。但是有可能有N号码吗?并且在体内有循环遍历N个变量用于某种执行?

谢谢。

+3

MySQL或SQL服务器?请不要标记无关的产品。 –

+1

任何时候你认为“我需要一个变量数量的变量”,而是认为“我需要一个数组”。 [这个问题可以帮帮忙,如果它是MySQL的(https://stackoverflow.com/questions/8149545/pass-array-to-mysql-stored-routine) – JNevill

+3

如果SQL Server使用** [TVP(https://开头docs.microsoft.com/en-us/sql/relational-databases/tables/use-table-valued-parameters-database-engine)** – lad2025

回答

0

在SqlServer中,您可以使用Xml参数并将所有参数作为Xml传递。 你的程序是这样的:

Create procedure myStoredProc (@xml xml) 
as 
SELECT 
c.value('(.)', 'VARCHAR(8000)') AS paramvalue 
FROM @xml.nodes('/Root/param') T(c) 
GO 

此过程解析简单XML输入和选择所有参数。

而且你可以用XML参数调用存储过程如下

DECLARE @xml xml 
SET @xml='<Root> 
    <param>1</param> 
    <param>2</param> 
    <param>3</param> 
</Root>' 

exec myStoredProc @xml