存储过程中:
先检索数据库表中制定的记录是否存在,如果存在则updata相应字段,如果不存在则insert一条新记录。
if(updata()=失败)
{
insert();
}存在的问题:
1、updata语句的成功失败的状态;
2、我的这个存储过程操作比较频繁,需要提高效率
先检索数据库表中制定的记录是否存在,如果存在则updata相应字段,如果不存在则insert一条新记录。
if(updata()=失败)
{
insert();
}存在的问题:
1、updata语句的成功失败的状态;
2、我的这个存储过程操作比较频繁,需要提高效率
update table set .... where id=@id
else
insert ...不行吗?
--成功
else
--不成功
begin
insert CardBusinessPoint xxxx
end是这样的吗?
是先执行update语句,然后在下面执行:
update t set s=1
if @@Error=0--成功
insert CardBusinessPoint xxxx
else--不成功
...
这个@@Error是最近一次操作成功与否的标志符,你可以放心地先执行你的语句,然后紧接着判断@@Error的值是否为0就可以了.不是拿它去和update比较.
if @@Error=0--成功--------------------update失败吧?
insert CardBusinessPoint xxxx
else--不成功另外,@@Error是全局变量吧?
整个SQL各个存储过程是并行处理的还是串行处理的?会不会出现其他存储过程同时处理的@@Error给我这个存储过程一个错误的结果啊
if @@Error=1
begin
insert into CardBusinessPoint (BusinessID,[Date],TotalInPoint,TotalOutPoint,InputPoint,MessagePoint,FindPoint,RePoint,BounsPoint) values(left(@terminalID,8),getdate(),0,@cutpoint,0,0,0,@cutpoint,0)
end没有达到我预期的效果啊
update没有成功的时候,也没有增加新记录!!!
set @row_var=@@rowcount
if @row_var=0
begin
INSERT tablename (……) VALUES (……)
end
返回最后执行的 Transact-SQL 语句的错误代码。
用 @@ERROR 检测一个特定错误
下面的示例用 @@ERROR 在一个 UPDATE 语句中检测限制检查冲突(错误 #547)。USE pubs
GO
UPDATE authors SET au_id = '172 32 1176'
WHERE au_id = "172-32-1176"IF @@ERROR = 547
print "A check constraint violation occurred"