2016-07-26 14 views
0

Ich trigge gespeicherte Prozedur und übergeben Sie Parameter von Visual Studio zu SQL Server gespeicherte Prozedur.Übergeben von mehreren Parametern an gespeicherte Prozedur

Hier Code:

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

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

Aber ich brauche, um mehrere Parameter übergeben (int, DateTime und eine Liste der ganzen Zahlen).

Hier ist, wie ich es tun:

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); 

Aber es scheint falsch zu sein.

Irgendeine Idee, was ich hier falsch mache?

+1

Google 'Tabellentyp Parameter für gespeicherte SQL Server Procedures' Sie Ihre Liste von Zahlen zu diesem Tabellentyp-Parameter übergeben kann. –

Antwort

0

Sie können auch eine XML senden Parameter zu SQL, wie folgt verwenden:

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 
Verwandte Themen