2017-10-10 125 views
0

我想通過用戶定義的表類型將int數組傳遞給存儲過程,然後將其插入到表中。通過WCF服務將int列表傳遞到存儲過程

這裏就是我試圖做的:

  1. 創建類型:

    CREATE TYPE [dbo].[GarantiesList] AS TABLE ([code_garantie] [nvarchar](max) NULL) 
    
  2. 獲取&插入到存儲過程:

    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; 
    

但這失敗。我得到了錯誤:

沒有映射從對象類型系統Collections.Generic.List`1存在[[System.Int32,mscorlib程序,版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089]]對已知的託管提供商本機類型

有沒有人知道如何解決這個問題?

+0

的https://stackoverflow.com/q/5595353/3925232 –

回答

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

可能重複這個我試過,現在插入查詢的CODE_GARANTIES不 承認,我有這樣的錯誤:標量變量CODE_GARANTIES必須聲明。 – KhadBr

+0

現在我有這個錯誤:無法將參數值從List'1轉換爲IEnumerable'1。這可能是由於我從我的WCF服務傳遞的sqlParameter?這是我所做的: 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 parameter_Name在sql server中,並檢查你所面對的錯誤 –