我有一个简单的存储过程,它以一个输入参数为基础执行。但由于参数不同,我必须执行大约100次(参数是int)除了逐个输入参数值之外还有其他方法吗?我的意思是@parameter in(值1,值2,.....值n)。非常感谢。 这是程序:
ALTER PROCEDURE procname
@parameter AS BIGINT
AS
DELETE FROM tbl1 WHERE id = @parameter
DELETE FROM tbl2 WHERE tbl2_field=@parameter
DELETE FROM tbl3 WHERE tbl3_field=@parameter
DELETE FROM tbl4 WHERE tbl4_field=@parameter
答案 0 :(得分:0)
1)使参数可选 2)提供参数时,使用它来过滤结果 3)当参数为null时,返回所有结果,按参数表示的字段分组。
如:
Select EmpNum, EmpNameFull, DeptName, HireDate
From Employee
Where DeptName = paramDeptName
or paramDeptName IS NULL
订单 通过DeptName ,EmpNameFull
答案 1 :(得分:0)
您可以将数组传递给存储过程。这已经通过Stack Overflow上的不同数据库版本和多个解决方案得到了解答:
How to pass an array into a SQL Server stored procedure
在这里
Passing an array of parameters to a stored procedure
另一个解决方案可能是将参数逗号分开并在T-SQL中拆分并循环遍历值 How to split a comma separated string and loop its values in SQL Server (需要字符串参数)。