求SQL文(有关更新和插入)

大道如海 2004-08-24 12:11:54
有表如下:
ID other
1 111
2 222
3 333

ID为关键字。

如何根据数据动态的选择是插入还是更新。
比如数据(4,444)则应该是插入。
比如数据(3,444)则应该是更新。

...全文
146 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LovenDreams 2004-08-25
  • 打赏
  • 举报
回复
这种情况用合并最适合了
如下,其中iID,sOther是你要判断的值,对应3,444或4,444 等。

merge into table t1
using table t2 on (t2.id=t1.id and t1.id=iID)
when matched then update set t1.other=sOther
when not matched then insert (t1.id,t1.Other)
values(iID,sOther)
wdslhr 2004-08-25
  • 打赏
  • 举报
回复
这样不知道可不可以?
create procedure UpdateorInsert (Table_Id:long,Table_other:long)
as
begin
delete from Table where Id = Table_Id ;
insert into Table (Id,Other) values (Table_Id,Table_Other);
end;
bzszp 2004-08-25
  • 打赏
  • 举报
回复
不作判断,
通过先delete 然后 insert 来处理。
liuyi8903 2004-08-25
  • 打赏
  • 举报
回复
Create Or Replace Procedure P_TEST(Varchar2 V_ID,Varchar2 V_OTHER)Return Number Is
v_count Integer;
Begin
Select ID
Into V_COUNT
From TABLENAME
Where ID=V_ID;

If V_COUNT<>0 Then
Update TABLENAME Set OTHER=V_OTHER
Where ID=V_ID;
Else
Insert Into TABLENAME(ID,OTHER)Values(V_ID,V_OTHER);
End If;
Return V_COUNT;
End P_TEST;
dinya2003 2004-08-24
  • 打赏
  • 举报
回复
是输入 一个参数,然后决定是插入还是更新?
写个函数或过程来处理.
yujiabian 2004-08-24
  • 打赏
  • 举报
回复
你总得有规律吧?没有规律就是decode也没能力啊
BillyGao 2004-08-24
  • 打赏
  • 举报
回复
create proc updateOrInsert @inputId integer
As
if exists(select id from tablename where id=@inputId)
BEGIN
update tablename set other=@inputId*100+@inputId*10+@inputId
where id=@inputId
END
else
BEGIN
insert into tablename (id, other) values(@inputId,@inputId*100+@inputId*10+@inputId)
END
大道如海 2004-08-24
  • 打赏
  • 举报
回复
如何呢,能否写点象征性的SQL
qiaozhiwei 2004-08-24
  • 打赏
  • 举报
回复
用decode
zonelive 2004-08-24
  • 打赏
  • 举报
回复
up
yfjyz 2004-08-24
  • 打赏
  • 举报
回复
不明白啥意思?
zmgowin 2004-08-24
  • 打赏
  • 举报
回复
use merge
zhpsam109 2004-08-24
  • 打赏
  • 举报
回复
写存储过程处理!

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧