我在后台的数据库中写了一个存储过程,是这个样子的!--------新增用户存储过程CREATE PROCEDURE SQLProcNewProc       @RegOperatorID nchar(10),      /* 操作员ID */
       @Name varchar(50),@Phone nchar(50),
       @Address varchar(50),
       @IdentityCard nchar(40),@Transfer bit(1),
       @GasBurnerID int(4),@WaterHeaterID int(4),@GasMeter varchar(50),
       @Regmoney money(8),@InstallKind int(4),@GasKindID int(4)
       @ID Output int(4)
AS
  Begin  Insert CustomerInfor
          (ICID,CName,Phone,Address,IdentityCard,Transfer,RegDay,RegOperatorID,GasBurnerID,WaterHeaterID,Gasmeter,RegMoney,Installkind)
  values  
(0,@CName,@Phone,@Address,@IdentityCard,@Transfer,getdate(),@RegOperatorID,@GasBurnerID,@WaterHeaterID,@GasMeter,@RegMoney,@InstallKind)
    select @ID=scope_identity()   end
Go在客户端中,
 为各个参数赋与适合的值,
 DMD.SQLProcNewProc.close;
 //为参数赋值
 DMD.SQLProcNewProc.execproc;
label1.Caption:=DMD.SQLProcNewProc.params.paramsByName('@ID').text;以上代码,在一个按钮控件中执行,成功,
 可是第一次单击,label1.Caption 为零,第二次单击没有变(还是零),第三次没有变(还是零),
第四次才是5037.以后每次都正常.退出窗口(此时程序没有退出),再进入,每次单击都正常,但是退出整个程序又回到三次单击为零的状态,
 我对这前次都进行了追踪(在存储过程中,update一个表的字段),发现标识列己经改变了,但在客户端却是零.这个问题,我一个晚上都没有解决,请高手过来帮忙!!!

解决方案 »

  1.   

    在查询分析器中执行
    declare @r int
    exec SQLProcNewProc 'A','B',..(每个参数以逗号分割)..@r(最后一个输出参数) output
    print @r看看结果和程序中的一样吗
      

  2.   

    我在存储过程中,加了一个update 在存储过程中,update一个表的字段,在客户端执行一次后,
    去检查那个字段,这个字段正在预料的值,在存储过程中得到的标识列的值应该是没有问题的,关键是客户端, 客户端曾经报过dbexpress.dll的错误. 这个错误,有时出现,有时不出现,
    我回去时再在机子上式一下!!!!
      

  3.   

    在查询分析器中执行
    declare @r int
    exec SQLProcNewProc 'A','B',..(每个参数以逗号分割)..@r(最后一个输出参数) output
    print @r看看结果和程序中的一样吗执行结果是没有问题的!!