Create Or Replace Procedure p_Update_Add(Pn_Id In Number, --传入的id
Ln_Code Number, --返回码
Lr_Reinfo Number) Is
Ln_Flags Number
Begin
Select Count(1) Into Ln_Flags From t_Test Where Id = Pn_Id--t_test为测试表
If Ln_Flags >0 Then
--有一条或多条记录存在,表示主键已经存在,进行更新 *** 作
Update t_Test Set Xxx = Xxx
Lr_Code := 1
Lr_Reinfo := '进行更新'
Elsif Ln_Flags = 0 Then
--没有记录,进行添加 *** 作
Insert Into t_Test Values (Xx, Xxx, Xxx, Xxx)
Lr_Code := 2
Lr_Reinfo := '进行新增'
Else
Lr_Code := -1
Lr_Reinfo := ' *** 作失败'
End If
Exception
When Others Then
Dbms_Output.Put_Line('出现异常')
Rollback
End
可以使用insert触发器create trigger tgr_tablename_insert
on tablename
for insert --插入触发
as
declare @num int
select @num = count(1) from tablename tb where tb.a = inserted.a and tb.b = inserted.b and tb.c = inserted.c
if @num >0
begin
insert.......
end
else
begin
update....
end
go
没有测试下,不知道对不对,你可以看着修改下,用的是sqlserver的语法
oracle中条件更新用case when结构,举例如下:用法如下:
update test set column1=
(case testCond
when ' ' then 'xxx'
else yyy end )
这样就可以更具某个字段的值来更新另外一个字段了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)