ハードコーディングされた値でストアド プロシージャを実行しています。コマンドはエラーなしで正常に実行されます。しかし、データはデータベースで更新されていません。そのストアド プロシージャを SQL Server で実行すると、データが更新されます。私の間違いは何ですか?
C# コード
using (SqlTransaction sqlTrans = con.BeginTransaction())
{
using (SqlCommand AdjustTax = new SqlCommand("GP_SOP_AdjustTax", con, sqlTrans))
{
try
{
AdjustTax.CommandType = CommandType.StoredProcedure;
AdjustTax.Parameters.Add("@IN_SOPType", SqlDbType.Int).Value = 3;
AdjustTax.Parameters.Add("@IN_SOPNo", SqlDbType.VarChar).Value = "stdinv2278";
AdjustTax.Parameters.Add("@IN_AdjustAmount", SqlDbType.Int).Value = 0.04;
AdjustTax.Parameters.Add("@O_iError", SqlDbType.Int, 250);
AdjustTax.Parameters["@O_iError"].Direction = ParameterDirection.Output;
if (con == null || con.State == ConnectionState.Closed)
{
con.Open();
}
AdjustTax.ExecuteNonQuery();
int Error = (int)AdjustTax.Parameters["@O_iError"].Value;
if (Error == 0)
{
MessageBox.Show("Tax is Adjusted");
}
if (Error != 0)
{
MessageBox.Show("Error No:" + Error1);
}
sqlTrans.Commit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
sqlTrans.Rollback();
}
finally
{
con.Close();
}
}
}
SQL Server コード
DECLARE @return_value int,
@O_iError int
EXEC @return_value = [dbo].[GP_SOP_AdjustTax]
@IN_SOPType = 3,
@IN_SOPNo = 'stdinv2278',
@IN_AdjustAmount = 0.04,
@O_iError = @O_iError OUTPUT
SELECT @O_iError as N'@O_iError'
SELECT 'Return Value' = @return_value
GO