以下のコードでエラーが発生します。私は、「データ型intにnvarchar型の値が 『113332,113347』を変換する際の変換に失敗しました。」「113332,113347」"nvarchar値 '113332,113347'をデータ型intに変換するときに変換に失敗しました。
cn.Open();
SqlCommand cmd = new SqlCommand("SelectUser", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@in_UserId", SqlDbType.Int).Value = Convert.ToInt32(userId);
cmd.Parameters.Add("@in_StartDate", SqlDbType.DateTime).Value = fromDate;
cmd.Parameters.Add("@in_EndDate", SqlDbType.DateTime).Value = toDate;
cmd.Parameters.Add("@in_LocalIds", SqlDbType.NVarChar, 100).Value = localids.ToString();
cmd.ExecuteNonQuery();
としてローカルIDを渡しています
データベースでは、ローカルIDのデータ型はintです。
ストアドプロシージャのコードがそのように変換し、(SQLでは、whileループのいくつかの種類でなければならない)の値を分割し、あなたは「」によって接合INTを有する@in_LocalIds
パラメータで
CREATE PROCEDURE [dbo].[User_Update] @in_UserId INT
,@in_StartDate DATETIME
,@in_EndDate DATETIME
,@in_LocalIds NVARCHAR(100)
AS
BEGIN
SELECT * FROM TABLE1 WHERE LocalId in (@in_LocalIds) AND UserId = @in_UserId
END
go
それが失敗したときにuserId' 'で何ですか?それはintではないように見えます。 – LordWilmore
ストアドプロシージャをポストできますか?あなたのコードに 'localids'とはどのような型ですか? –
バグがあり、同じ文字列値 "113332,113347"を 'localids'と' userid'の両方に割り当てているように私に聞こえます –