一存储过程中,有一条Insert语句,存储过程如下:
CREATE PROCEDURE [dbo].[INSERTRJZ]
  @a1 as nvarchar(20),
  @a2 as  nvarchar(20),
  @a3 as  nvarchar(20),
  @a4 as  nvarchar(20),
  @a5 as  nvarchar(20),
  @a6 as  nvarchar(20),
  @a7 as  nvarchar(20),
  @a8 as  nvarchar(20),
  @a9 as  nvarchar(20),
  @a10 as  bit,
  @a11 as  bit,
  @a12 as  bit,
  @a13 as  datetime
as
  declare @bh integer
  Insert into Rjz (Man,Zdbh,Cc,Xlbh,Pj,Sl,JhDate,Today,Fcsj,
                          BpFlag,FpFlag,TpFlag,MyTime) values 
                         (@a1,@a2,@a3,@a4,@a5,@a6,@a7,@a8,@a9,@a10,@a11,
                           @a12,@a13)
IF @@ERROR <> 0
begin
   Set @bh = 0
   Select @bh    
end
else
begin 
  Select Top 1 Bh From Rjz Order by ID desc 
end
GO在程序代码中,还专门判断过 @bh的值是否正确。大多数情况下,该存储过程都能正确执行。但总有那么万分之一的机会出现提示插入成功,但是数据库表中就是没有该条记录。十万火急呀,就是这万分这一的概率,已经发生过十次了,损失了数千元人民币呀

解决方案 »

  1.   

    Bh是自动编号?如果是,直接用: select @@identity
      

  2.   

    Bh 不是自动编号,数据库中有一字段 ID为主键,是自动编号的。Bh是设置的公式,让其等于ID,
      

  3.   

    追加数据后,直接用以下SQL获取新生成的ID的值: select @@identity
      

  4.   

    什么错误都不提示,每次@@ERROR 都不会为0,所以我认为每次都是提示成功了。但是有时候,有些记录在数据库中就是找不到
      

  5.   

    什么错误都不提示,每次@@ERROR 都会为0,所以我认为每次都是提示成功了。但是有时候,有些记录在数据库中就是找不到
      

  6.   

    什么错误都不提示,每次@@ERROR 都会为0,所以我认为每次都是提示成功了。但是有时候,有些记录在数据库中就是找不到