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"子句的记录进行选择计数,然后如果我找到零个结果,我会进行插入,如果我找到至少一个结果,则我会进行更新。但我觉得这个解决方案有点沉重。
无法测试,但您可以尝试此
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";