2017-06-17 9 views
0
私はエラーが多くargumetnsにこれは私のC#のコードであると私はSQLのパラメータを渡しています

複数のパラメータを持つSQLストアの手順でデータテーブルを渡す方法

を指定しているようocuredよりも、このパラメータを渡しています

ここで

  public async Task<CustomerProductDetailsResp> QuickSaveCustomerProductDetails(CustomerProductDetailsReq objReq) 
     { 
     Connection con = new Connection(); 
     CustomerProductDetailsResp objBO = new CustomerProductDetailsResp(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("RowID", typeof(int)); 
     dt.Columns.Add("CustomerID", typeof(int)); 
     dt.Columns.Add("Quantity", typeof(double)); 
     dt.Columns.Add("ProductID", typeof(int)); 
     int index = 1; 
     try 
     { 

      foreach (BOCustomerProducts list in objReq.CustomerProductDetails.CustomerProducts) 
      { 
       DataRow dr = dt.NewRow(); 

       dr["RowID"] = index; 
       dr["CustomerID"] = list.CustomerID; 
       dr["Quantity"] = list.Quantity; 
       dr["ProductID"] = list.ProductID; 

       dt.Rows.Add(dr); 

       index++; 
      } 

      con.Open(); 
      con.cmd.CommandText = "SP_QuickSaveCustomerProductDetail"; 
      con.cmd.CommandType = CommandType.StoredProcedure; 
      con.cmd.Parameters.AddWithValue("@Year", objReq.CustomerProductDetails.Year); 
      con.cmd.Parameters.AddWithValue("@Month", objReq.CustomerProductDetails.Month); 
      con.cmd.Parameters.AddWithValue("@CreatedBy", objReq.CustomerProductDetails.CreatedBy); 
      con.cmd.Parameters.AddWithValue("@CreatedOn", objReq.CustomerProductDetails.CreatedOn); 
      con.cmd.Parameters.AddWithValue("@List", dt); 

      SqlParameter Msg = new SqlParameter("@Msg", SqlDbType.VarChar, 20000); 
      Msg.Direction = ParameterDirection.Output; 
      con.cmd.Parameters.Add(Msg); 

      objBO.ID = con.cmd.ExecuteNonQuery(); 

      objBO.Msg = Msg.Value.ToString(); 


     } 
     catch (Exception ex) 
     { 
      objBO.ID = 0; 
      objBO.Msg = ex.Message; 
     } 
     finally 
     { 
      con.Close(); 
     } 


     return objBO; 
    } 
はソートSQLストアの手順であり、私はこの方法

 ALTER PROC [dbo].[SP_QuickSaveCustomerProductDetail] 
     (

     @Year int, 
     @Month int, 
     @CreatedBy int, 
     @CreatedOn datetime, 
     @Msg varchar(MAX) OUTPUT, 
      @List AS dbo.ProductList READONLY 
     ) 
     AS 
      BEGIN 
      END 

のように、このparamentersにアクセスして、これは私のテーブルタイプ

01です
 CREATE TYPE dbo.ProductList 
     AS TABLE 
      (
      RowID int, 
      CustomerID INT, 
      Quantity numeric(18,2), 
      ProductID INT 
     ); 
+0

C#コードでのクエリはどこですか?クエリのパラメータの数が少なすぎます。投稿されたコードは5つのパラメータを追加しています。 – jdweng

答えて

1

手順に「@OpType」パラメータが指定されていないようです。

+0

はい、私はこのクエリを投稿した後に知っています....でもThanks @IngoB –

関連する問題