在存储过程中添加值已经存在的消息

uplii1fm  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(323)

创建过程dbo.insertdata(@sifra varchar(50),@opis varchar(50), @State 位)
作为开始
提交事务
声明@errormessage nvarchar(最大值)
如果存在(从dbo.opstinitbl中选择*,其中sifra=@sifra和opis=@opis和status=@status)

ROLLBACK TRANSACTION

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

            RETURN 1

其他的
开始交易

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

  VALUES(@Sifra, @Opis, @Status)

结束

vuktfyat

vuktfyat1#

//这里可能会出什么问题?
clconnection clconn=new 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
        }
nue99wik

nue99wik2#

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
wwtsj6pe

wwtsj6pe3#

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

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

相关问题