如何编写具有未知数量参数的存储过程?
问题描述:
我想写sp会得到不同数量的参数,但每次有一些参数有价值和其他是空的。如何编写具有未知数量参数的存储过程?
该sp用于在db中搜索并返回基于不同参数数量(参数的变化意味着要考虑的字段的变化)的结果。
答
这是我在过去做过的参数是动态的我在C#中创建一个xml并在proc中传递了这个xml。在proc中,我读取该XML,然后基于XML值可以编写查询。请注意哟已更新为每个新的参数以后添加,使您的查询工作正常
DECLARE @FileXML XML = '<?xml version="1.0"?>
<Parameters>
<Parameter name ="para1" value="1"/>
<Parameter name ="para2" value="4"/>
</Parameters>';
--CREATE PROCEDURE dbo.ParseDynamicXML
-- @XML XML
--AS
BEGIN
SELECT
Parameters.value('@name','NVARCHAR(100)') AS name,
Parameters.value('@value','NVARCHAR(100)') AS value
FROM @FileXML.nodes('Parameters/Parameter')Catalog(Parameters)
RETURN;
END;
取决于你u可以使用格式化XML作为输入,然后读取这个XMLñ做所需的SQL –
使用默认的PROC值。 –
在Postgres中,您可以使用'variadic'参数。你正在使用哪个DBMS? Postgres的?甲骨文? –