参数都对,存储的语句也正确执行了,就是不能返回得到的值
我是用dbexpress的TSqlStoredProcedure
参数用ptResult,和output都不能返回
create PROCEDURE dbo.sp_log
@vId int,
@vPer_name varchar(10),
@vOper_menu varchar(20)='',
@vOper_comp varchar(15)=''
AS
begin transaction
if @vId=0
insert into oper_log(per_name,oper_menu,oper_time,oper_computer)values(@vPer_name,@vOper_menu,{Fn Now()},@vOper_comp)
else
update oper_log set oper_endtime={Fn Now()}, operate=@vPer_name where oper_id=@vId
commit
return @@identity我已经查过了论坛很多例子,都不行的
用Ado可以返回值

解决方案 »

  1.   

    dbexpress不太稳定的......
    up
      

  2.   

    调试一下,看TSqlStoredProcedure的返回值是什么,如果他的返回值正确,就很容易处理了
      

  3.   

    你的存储过程有问题,应把返回值作为过程的一个输出参数定义,用out关键字,如下:
    create PROCEDURE dbo.sp_log
    @vId int,
    @vPer_name varchar(10),
    @vOper_menu varchar(20)='',
    @vOper_comp varchar(15)='',
    @myId tinyint out
    AS
    begin transaction
    if @vId=0
    insert into oper_log(per_name,oper_menu,oper_time,oper_computer)values(@vPer_name,@vOper_menu,{Fn Now()},@vOper_comp)
    else
    update oper_log set oper_endtime={Fn Now()}, operate=@vPer_name where oper_id=@vId
    commit
    set @myId=@@identity
      

  4.   

    to:jianling0538(zjl)
    我试过一样的,同样ado都可以
      

  5.   

    是要得到@@identity的值,如果是的话,用return怎么能用procedure,就该用function
      

  6.   

    你把return @@identity
    换成
    select @as_bkzh1=@as_bkzh 
    如:存储过程头为: create procedure get_bkzh   
    (@as_rno char(10),@as_bkzh1 char(20) output//一定要先定义好,并设置类型)
    这是sybase的用法,你可以试试
      

  7.   

    对不起,没看清楚,dbexpress我没有用过
      

  8.   

    已经自己解决,200分给各位发奖金了
    加了一句就可以了set nocount on
    帮助别人就是帮助自己
    可以安心过年了,祝大家春节快乐!