如何编写具有未知数量参数的存储过程?

问题描述:

我想写sp会得到不同数量的参数,但每次有一些参数有价值和其他是空的。如何编写具有未知数量参数的存储过程?

该sp用于在db中搜索并返回基于不同参数数量(参数的变化意味着要考虑的字段的变化)的结果。

+0

取决于你u可以使用格式化XML作为输入,然后读取这个XMLñ做所需的SQL –

+0

使用默认的PROC值。 –

+1

在Postgres中,您可以使用'variadic'参数。你正在使用哪个DBMS? Postgres的?甲骨文? –

这是我在过去做过的参数是动态的我在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;