在存储过程中添加消息,表明该值已存在

时间:2018-06-27 08:18:08

标签: mysql

创建过程dbo.InsertData(@Sifra VARCHAR(50),@Opis VARCHAR(50),@Status BIT)

始于

提交交易

DECLARE @ErrorMessage NVARCHAR(MAX)

如果存在(选择*来自dbo.OpstiniTBL,Sifra = @Sifra AND Opis = @Opis AND St​​atus = @Status)

  ROLLBACK TRANSACTION

  RAISERROR ('Шифрата веќе постои', 16, 1)

            RETURN 1

ELSE

开始交易

  INSERT INTO dbo.OpstiniTBL(Sifra, Opis, Status)

  VALUES(@Sifra, @Opis, @Status)

END

3 个答案:

答案 0 :(得分:0)

CREATE PROCEDURE dbo.InsertData(@Sifra VARCHAR(50), @Opis VARCHAR(50), @Status BIT)

AS BEGIN

BEGIN TRANSACTION

DECLARE @ErrorMessage NVARCHAR(MAX)

IF EXISTS(SELECT * FROM dbo.OpstiniTBL WHERE Sifra = @Sifra AND Opis = @Opis AND Status = @Status)
BEGIN
  ROLLBACK TRANSACTION
set @ErrorMessage='value exists'

END
ELSE
BEGIN
  INSERT INTO dbo.OpstiniTBL(Sifra, Opis, Status)

  VALUES(@Sifra, @Opis, @Status)
END


  COMMIT TRANSACTION
END

答案 1 :(得分:0)

//,这里可能出什么问题了?

clConnection clConn =新的clConnection();             SqlConnection conn = clConn.openConnection();

        SqlCommand comm = new SqlCommand("InsertData", conn);
        comm.Connection = conn;

        comm.CommandType = CommandType.StoredProcedure;

        comm.Parameters.Add("@Sifra", SqlDbType.NVarChar).Value = OObject.Sifra;
        comm.Parameters.Add("@Opis", SqlDbType.NVarChar).Value = OObject.Opis;
        comm.Parameters.Add("@Status", SqlDbType.Bit).Value = OObject.Status;

        try
        {
            comm.ExecuteNonQuery();
            check = true;

        }
        catch (SqlException sqlexc)
        {
            // handle SQL exception
        }

答案 2 :(得分:0)

在此处正确使用存储过程名称

   SqlCommand comm = new SqlCommand("YourStoredProcedure_Name", conn);