У меня есть следующая хранимая процедура, которую я вызываю через службу 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!));
}
Чего мне не хватает ???
Спасибо за миллиард заранее