首页 文章

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

提问于
浏览
0

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

开始

提交交易

DECLARE @ErrorMessage NVARCHAR(MAX)

IF EXISTS(SELECT * FROM dbo.OpstiniTBL WHERE Sifra = @Sifra AND Opis = @Opis AND Status = @Status)

ROLLBACK TRANSACTION

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

            RETURN 1

其他

开始交易

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

  VALUES(@Sifra, @Opis, @Status)

结束

3 回答

  • 1

    //这可能会出错?

    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
            }
    
  • 0

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

    SqlCommand comm = new SqlCommand("YourStoredProcedure_Name", conn);
    
  • 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
    

相关问题