将多个参数传递给存储过程

将多个参数传递给存储过程

问题描述:

我触发存储过程并将参数从Visual Studio传递到SQL Server存储过程。将多个参数传递给存储过程

这里是代码:

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

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

但我需要通过多个参数(intDateTime和整数的列表)。

我这里是怎么做的:

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

谷歌'表型参数存储Procedures'你可以通过你的号码的列表,以该表类型参数的SQL Server。 –

,您还可以使用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