2017-02-19 2 views
0

Я пытаюсь написать sp, который получит различное количество параметров, но каждый раз, когда некоторые из параметров имеют значение, а другие - null.Как написать процедуру хранения с неизвестным количеством параметров?

Этот sp записывается для поиска в db и возвращает результат, основанный на вариантном числе параметров (изменение параметров означает изменение полей, которые необходимо учитывать).

+0

зависит от вас и может использовать форматированный XML в качестве входных данных, то прочитайте этот XML-н сделать необходимый SQL –

+0

Использовать по умолчанию значения. –

+1

В Postgres вы можете использовать параметр «variadic». Какие СУБД вы используете? Postgres? Oracle? –

ответ

0

Это то, что я сделал в прошлом, когда параметры динамические. Я создаю xml в C# и передал этот xml в proc. В 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; 
Смежные вопросы