如何使用未知数量的参数编写存储过程?

时间:2017-02-19 13:10:55

标签: sql

我正在尝试编写sp,它将获得不同数量的参数,但每次某些参数都有值而其他参数都为null。

这个sp被编写为在db中搜索并根据变量的参数数返回结果(参数的变化意味着要考虑的字段的变化)。

1 个答案:

答案 0 :(得分:0)

这是我过去在参数是动态的过程中我在C#中创建了一个xml并在proc中传递了xml。在proc中,我读取了xml,然后根据XML值编写查询。请注意,您必须更新稍后添加的每个新参数的proc,以使您的查询正常工作

    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;