I have the following stored procedure that I invoke through a WCF service (C#.NET).
The procedure executes successfully (I traced using profile), problem is that changes are not saved to database. I googled a lot but I couldn’t find a solution to this problem…
ALTER PROCEDURE [dbo].[sp_create_x]
(
@X VarChar(10), @Y VarChar(2), @Z DateTime,
@A VarChar(10), @B DateTime, @C Int)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF NOT EXISTS (SELECT x FROM tblTable WHERE x = @X)
BEGIN
INSERT INTO
tblTable (x, y, z, a, b, c)
VALUES (@X, @Y, @Z, @A, @B, @C)
END
END
RETURN @@ERROR
The C# code that is used to invoke the sp is as follows:
SqlConnection conn = new SqlConnection(myConnectionString);
SqlCommand cmd = new SqlCommand("sp_create_x", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add("@X", SqlDbType.VarChar).Value = "somevalue";
cmd.Parameters.Add("@Y", SqlDbType.VarChar).Value = "somevalue";
cmd.Parameters.Add("@Z", SqlDbType.DateTime).Value = DateTime.Now;
cmd.Parameters.Add("@A", SqlDbType.VarChar).Value = "somevalue";
cmd.Parameters.Add("@B", SqlDbType.DateTime).Value = DateTime.Now;
cmd.Parameters.Add("@C", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@RETURN", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
cmd.Transaction = trans;
cmd.ExecuteNonQuery();
int errCode = (int)cmd.Parameters["@RETURN"].Value;
conn.Close();
if (errCode != 0)
{
throw new Exception(string.Format("Error!));
}
What am I missing???
Thanks a billion in advance
I’m guessing the
cmd.Transaction = transassigns a transaction that is never comitted.