複数のテーブル値のパラメータを受け入れるストアドプロシージャにDataTableを渡そうとしています。 は、対応する13列(複数可)とテーブル値 パラメータを渡そうとし複数のテーブル値のパラメータを含むストアドプロシージャに複数のテーブルを渡す問題
:問題は、すべてのパラメータはので、私はこのようなエラーを取得しています最初の1に渡されているようだ、ですユーザー定義テーブルタイプ には17個の列が必要です。
ここに私のコードだ..
ストアドプロシージャヘッダー:PARM1 @
CREATE PROCEDURE TestProc
@Parm1 Temp1TableType READONLY,
@Parm2 Temp2TableType READONLY,
@Parm3 Temp3TableType READONLY,
@Parm4 Temp4TableType READONLY,
@Parm5 Temp5TableType READONLY
はPARM4 11列@ 17カラム、PARM2 @ 13列、PARM3 @ 3つの列を有し、Parm5が持ちます@ 8列。
C#コード(私はMicrosoft.ApplicationBlocksを使用)
DataTable dtTable1 = dsSource.Tables[0];
DataTable dtTable2 = dsSource.Tables[1];
DataTable dtTable3 = dsSource.Tables[2];
DataTable dtTable4 = dsSource.Tables[3];
DataTable dtTable5 = dsSource.Tables[4];
SqlParameter param1 = new SqlParameter("@Parm1", dtTable1);
SqlParameter param2 = new SqlParameter("@Parm2", dtTable2);
SqlParameter param3 = new SqlParameter("@Parm3", dtTable3);
SqlParameter param4 = new SqlParameter("@Parm4", dtTable4);
SqlParameter param5 = new SqlParameter("@Parm5", dtTable5);
param1.SqlDbType = SqlDbType.Structured;
param2.SqlDbType = SqlDbType.Structured;
param3.SqlDbType = SqlDbType.Structured;
param4.SqlDbType = SqlDbType.Structured;
param5.SqlDbType = SqlDbType.Structured;
SqlParameter[] parms = new SqlParameter[5];
parms[0] = param1;
parms[1] = param2;
parms[2] = param3;
parms[3] = param4;
parms[4] = param5;
returnVal = SqlHelper.ExecuteScalar(CfgKeys.ConnString, CommandType.StoredProcedure, "TestProc", parms);
今日は、SqlClientではなく、Microsoft.ApplicationBlocksを使用してみましたが、私はまだ同じエラーを得ました。
SqlConnection conn = new System.Data.SqlClient.SqlConnection(CfgKeys.ConnString);
conn.Open();
using (conn) {
SqlCommand cmdTestDataToServer= new SqlCommand("TestProc", conn);
cmdTestDataToServer.CommandType = CommandType.StoredProcedure;
SqlParameter param1 = new SqlParameter("@Parm1", dtTable1);
SqlParameter param2 = new SqlParameter("@Parm2", dtTable2);
SqlParameter param3 = new SqlParameter("@Parm3", dtTable3);
SqlParameter param4 = new SqlParameter("@Parm4", dtTable4);
SqlParameter param5 = new SqlParameter("@Parm5", dtTable5);
param1.SqlDbType = SqlDbType.Structured;
param2.SqlDbType = SqlDbType.Structured;
param3.SqlDbType = SqlDbType.Structured;
param4.SqlDbType = SqlDbType.Structured;
param5.SqlDbType = SqlDbType.Structured;
cmdTestDataToServer.Parameters.Add(param1);
cmdTestDataToServer.Parameters.Add(param2);
cmdTestDataToServer.Parameters.Add(param3);
cmdTestDataToServer.Parameters.Add(param4);
cmdTestDataToServer.Parameters.Add(param5);
returnVal = cmdTestDataToServer.ExecuteScalar();
}
conn.Close();
これを実行すると、すべてのパラメータが@ Param1に渡されているように見えます。したがって、前述のエラーです。手動でTSQLのプロシージャを実行すると動作しますので、エラーが発生します。誰かが私が間違っていた場所にスポットできますか?
TIA!
よろしくお願いいたします。 – kahoon