繁体   English   中英

更新SQL Server表中是否存在

[英]Update if exist in SQL Server table

如果存在BatchNumber (以我BatchNumber ),如何更新整行?

在我的表格中,批次编号是唯一的,如果存在Batchnumber ,我需要更新整行或数量列

拜托,帮我以正确的方式做

{
    var conn = new SqlConnection(GetConnectionString());
    var StrBuilder = new StringBuilder(string.Empty);
    var splitItems = (string[])null;

    foreach (string item in SC_PurLinr)
    {
        const string sqlStatement = "INSERT INTO DEL_Stores (DealerCode, Code, Qty, ExpireDate, BatchNumber) VALUES";

        if (item.Contains(","))
        {
            splitItems = item.Split(",".ToCharArray());
            StrBuilder.AppendFormat("{0}('{1}','{2}','{3}','{4}','{5}'); ", sqlStatement, splitItems[0], splitItems[1], splitItems[2], splitItems[3], splitItems[4]);
        }
    }

    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(StrBuilder.ToString(), conn) { CommandType = CommandType.Text };
        cmd.ExecuteNonQuery();
        wucMessagePopup1.showPopup(1, string.Empty, "Record Saved Successfully.");
    }
    catch (SqlException ex)
    {
    }
    finally
    {
        conn.Close();
    }
}

使用SQL Server 2008中的MERGE:

WITH new_rows (
    SELECT @value value 
        ,@BatchNumber BatchNumber)
MERGE DEL_Stores target
USING new_rows source ON source.BatchNumber = target.BatchNumber
WHEN MATCHED THEN
    UPDATE SET value = @value
WHEN NOT MATCHED THEN
    INSERT (    
        BatchNumber
        ,value)
    VALUES(
        source.BatchNumber
        source.value);

您可以通过存储过程以更好的方式实现此目的。

您的程序应如下所示。

create PROCEDURE usp_Namae
         @parmeter INT
    ,@parmeter INT
    ,@BatchNumber INT
AS
BEGIN
    IF NOT EXISTS (
            SELECT *
            FROM tblname
            WHERE BatchNumber = @BatchNumber
            )
    BEGIN
        --INSERT query
    END
    ELSE
    BEGIN
        --Update query
    END
END

只需在插入数据之前添加IF语句,如下所示:

IF  EXISTS (select * from sys.columns where object_id = OBJECT_ID(N'DEL_Stores') and name='BatchNumber')
BEGIN
// Do insert here
END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM