2017-10-10 13 views
0

J'essaie de transmettre array of int à une procédure stockée avec un type de table défini par l'utilisateur, puis l'insérer dans une table.Passer une liste d'int dans une procédure stockée via le service WCF

Voici ce que j'ai essayé de le faire:

  1. créer le type:

    CREATE TYPE [dbo].[GarantiesList] AS TABLE ([code_garantie] [nvarchar](max) NULL) 
    
  2. Get & insertion dans la procédure stockée:

    ALTER PROCEDURE [dbo].[PS_EditerNouveauContrat_MRH] 
        @CODE_GARANTIES GarantiesList READONLY 
    AS 
    BEGIN 
        SET NOCOUNT ON; 
    
        INSERT INTO dbo.MVT_GARANTIES (CODE_GARANTIE) 
         SELECT c.code_garantie 
         FROM @CODE_GARANTIES c; 
    

Mais cette échoué. Je suis l'erreur:

Aucun mappage existe à partir du type d'objet système Collections.Generic.List`1 [[System.Int32, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] à un type natif du fournisseur géré connu.

Est-ce que quelqu'un sait comment résoudre ce problème?

+0

double possible de https://stackoverflow.com/q/5595353/3925232 –

Répondre

0
-- your Insert Statement is Not Proper try this 
    ALTER PROCEDURE [dbo].[PS_EditerNouveauContrat_MRH] 
     @CODE_GARANTIES NVARCHAR(MAX) 
    AS 
    BEGIN 
     SET NOCOUNT ON; 
     DECLARE @Sql_string NVARCHAR(4000) 
      SET @Sql_string ='INSERT INTO dbo.MVT_GARANTIES (CODE_GARANTIE) 
         SELECT code_garantie 
         FROM '[email protected]_GARANTIES+'' 
      PRINT @Sql_string 
      EXEC (@Sql_string) 

    END 
+0

J'ai essayé, maintenant CODE_GARANTIES de la requête d'insertion n'est pas reconnu, et j'ai cette erreur: la CODE_GARANTIES variable scalaire doit être déclaré. – KhadBr

+0

maintenant j'ai cette erreur: Impossible de convertir la valeur du paramètre d'un List'1 à un IEnumerable'1. cela peut-il être dû au sqlParameter que je passe de mon service WCF? Voici ce que j'ai fait: SqlParameter CODE_GARANTIES_Param = new SqlParameter ("@ CODE_GARANTIES", CODE_GARANTIES); CODE_GARANTIES_Param.SqlDbType = SqlDbType.Structured; command.Parameters.Add (CODE_GARANTIES_Param); – KhadBr

+0

@KhadBr exec PS_EditerNouveauContrat_MRH nom_paramètre dans le serveur sql et vérifiez à quelle erreur vous faites face –