2016-07-26 2 views
0

Я запускаю хранимую процедуру и передаю параметры из хранимой процедуры Visual Studio в SQL Server.Передача нескольких параметров хранимой процедуре

Вот код:

var cId = new SqlParameter("@clientId", clientId); 

var result = _context.Database.SqlQuery<DamageEventsDTL>("SPDamageEventsDTL @clientId", cId); 

Но мне нужно передать несколько параметров (int, DateTime и список целых чисел).

Вот как я это делаю:

int clientId = 5; 
DateTime date = new DateTime("2016-07-01"); 
List<int> list= new List<int>(new int[] { 2, 3, 5 }); 

var cId = new SqlParameter("@clientId", clientId); 
var dateEvents = new SqlParameter("@date", date); 
var freqEvents = new SqlParameter("@list ", list); 

var result = _context.Database.SqlQuery<DamageEventsDTL>("SPDamageEventsDTL @cId, @date, @list ", cId, dateEvents, list); 

Но это, кажется, неправильно.

Любая идея, что я делаю неправильно здесь?

+1

Google 'Таблица Тип Параметры для SQL Server хранимая Procedures' вы можете передать список номеров этого параметра типа таблицы. –

ответ

0

вы также можете использовать XML для отправки параметров SQL, например:

USE tempdb 
GO 
DECLARE @Element XML; 
      SET @Element=' 
<SavedOrderElement> 
    <Data> 
    <Age>5</Age> 
    <Nit>46546546546</Nit> 
    <Name>Jeff</Name> 
    <LastName>Thalliens</LastName> 
    <Email>[email protected]</Email> 
    <PokemonGo>Nothing</PokemonGo> 
    </Data> 
</SavedOrderElement>' ; 


;WITH ElementSavedOrders 
AS 
(  
    SELECT 
    CAST(c.query('data(Age)') AS VARCHAR(50)) as Age 
    ,CAST(c.query('data(Nit)') AS VARCHAR(50)) as Nit 
    ,CAST(c.query('data(Name)') AS VARCHAR(50)) as Name 
    ,CAST(c.query('data(LastName)') AS VARCHAR(50)) as LastName 
    ,CAST(c.query('data(Email)') AS VARCHAR(100)) as Email 
    ,CAST(c.query('data(PokemonGo)') AS VARCHAR(100)) as PokemonGo 
    FROM @Element.nodes('SavedOrderElement/*') as T(c)     
) 

SELECT * FROM ElementSavedOrders