asp.net:只有当UPDATE的WHERE子句找到零条记录时,才在oracle表中插入

本文关键字:记录 零条 才在 插入 oracle net UPDATE 子句 WHERE asp | 更新日期: 2023-09-27 18:28:58

我正在开发一个asp.net应用程序。我想知道如何更新oracle表记录的字段,如果该记录不存在,则插入它。

我有一个包含以下字段NAME和SURNAME的表。

我想将NAME等于="NAME"的记录的SURNAME更改为"new_SURNAME"。但是,如果表中的任何记录都不包含字段NAME等于NAME,我想插入一个新记录(SURNAME=new_SURNAME和NAME=NAME)。

这是我的代码:

        OracleConnection connection = new OracleConnection(connectionstring);
        try
        {
            connection.Open();
            OracleCommand command = connection.CreateCommand();
            string sql = "UPDATE TABLE SET SURNAME=''new_surname'' WHERE NAME=''name''";

                command.CommandText = sql;
                command.ExecuteNonQuery();
            connection.Close();
        }
        catch (Exception exp)
        {
        }

只有当更新找到与"where"子句匹配的零记录时,才有最佳的插入方法吗。我想首先对匹配"where"子句的记录进行选择计数,然后如果我找到零个结果,我会进行插入,如果我找到至少一个结果,则我会进行更新。但我觉得这个解决方案有点沉重。

asp.net:只有当UPDATE的WHERE子句找到零条记录时,才在oracle表中插入

无法测试,但您可以尝试此

using(OracleConnection connection = new OracleConnection(connectionstring))
using(OracleCommand command = connection.CreateCommand())
{
    connection.Open();
    string sql = @"MERGE INTO TABLE t USING dual on(name='name')
                   WHEN NOT MATCHED THEN INSERT (name, surname) values ('name', 'new_surname')
                   WHEN MATCHED THEN UPDATE SET surname = 'new_surname'";
    command.CommandText = sql;
    command.ExecuteNonQuery();
}

您可以将查询修改为:

string sql = @"IF EXISTS (SELECT * FROM ''Given Table'' WHERE NAME=''name'') THEN
BEGIN
--your update query
END
ELSE
BEGIN
-- your Insert Query
END
END IF";