SqlServer/Oracle 通过一个sql判断新增/修改
if (Config.DbInfo.DbType.Equals(DBType.SQLServer)) { sql = " IF EXISTS (SELECT 1 FROM wifi.imsi_model_status WHERE device_id = @device_id and wireless='" + row[0].GetString() + "') UPDATE wifi.imsi_model_status SET model_status = @model_status,version=@version,serialnumber=@serialnumber, Log_Time=" + SysConst.time_sqlserver + " WHERE device_id = @device_id and wireless='" + row[0].GetString() + "' ELSE INSERT INTO wifi.imsi_model_status(Log_Time, device_id, wireless,model_status,version,serialnumber) VALUES(" + SysConst.time_sqlserver + ", @device_id,'" + row[0].GetString() + "', @model_status,@version,@serialnumber)"; cmdParms = new IDataParameter[4]; cmdParms[0] = new SqlParameter("@device_id", deviceId); cmdParms[1] = new SqlParameter("@model_status", row[1].GetString()); cmdParms[2] = new SqlParameter("@version", ver); cmdParms[3] = new SqlParameter("@serialnumber", ser); sqlDic.Add(sql, cmdParms); } else if (Config.DbInfo.DbType.Equals(DBType.Oracle)) { sql = "MERGE INTO wifi.imsi_model_status a USING (select count(*) co from wifi.imsi_model_status WHERE device_id = :device_id and wireless='" + row[0].GetString() + "') b ON (b.co<>0) WHEN MATCHED THEN UPDATE SET Log_Time=" + SysConst.time_sql + ",model_status = :model_status,version=:version,serialnumber=:serialnumber WHERE device_id = :device_id and wireless='" + row[0].GetString() + "' WHEN NOT MATCHED THEN INSERT (Log_Time, device_id,wireless, model_status,version,serialnumber) VALUES(" + SysConst.time_sql + ", :device_id, '" + row[0].GetString() + "',:model_status,:version,:serialnumber)"; cmdParms = new IDataParameter[4]; cmdParms[0] = new OracleParameter(":device_id", deviceId); cmdParms[1] = new OracleParameter(":model_status", row[1].GetString()); cmdParms[2] = new OracleParameter(":version", ver); cmdParms[3] = new OracleParameter(":serialnumber", ser); sqlDic.Add(sql, cmdParms); }
代码很简单:
1.sqlserver就是使用的exists关键字判断
2.oracle这边就是使用的merge关键字判断
sqlserver核心代码:
if exists (select 1 from Teacher where id='1') update Teacher set name='lisi',addr='重庆' where Id='1' else insert into Teacher(id,name,addr) values(1,'lisi','重庆')
Oracle核心代码:
MERGE INTO Teacher USING (select count(1) co from Teacher WHERE id='1') on(co<>0) WHEN MATCHED THEN update set name='lisi',addr='重庆' where Id='1' WHEN NOT MATCHED THEN insert (id,name,addr) values(1,'lisi','重庆')
分类:
Oracle
, 数据库 / SqlServer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2016-05-05 c# 获取方法所在的命名空间 类名 方法名
2016-05-05 C#中类的序列化和反序列化