Хранимая процедура выполняется успешно, но изменения не сохраняются в базе данных - PullRequest
2 голосов
/ 17 мая 2011

У меня есть следующая хранимая процедура, которую я вызываю через службу WCF (C # .NET).

Процедура выполняется успешно (я отслеживал с помощью профиля), проблема в том, что изменения не сохраняются в базе данных.Я много гуглил, но не смог найти решение этой проблемы ...

   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

Код C #, используемый для вызова sp, выглядит следующим образом:

    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!));
    }

Чего мне не хватает ???

Спасибо за миллиард заранее

1 Ответ

4 голосов
/ 17 мая 2011

Я предполагаю, что cmd.Transaction = trans назначает транзакцию, которая никогда не завершается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...