if you are using ADO and you are returning a recordset, make sure you close it before accessing Command.Parameters("@ParamName"), see more athttp://www.15seconds.com/issue/010718.htmfor ADO.NET, see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingstoredprocedureswithcommand.asp

解决方案 »

  1.   

    -example:create procedure pr_test @name varchar(100) output
    asselect top 1 @name=name from sysobjectsgodeclare @a varchar(100)exec pr_test @a outputprint @a
      

  2.   

    在存储过程中定义带output关键字的变量,然后返回该变量。
    在delphi5.0+sqlserver7.0中屡试不爽
      

  3.   

    用带output的参数。如果涉及到表可用全局临时变量。
      

  4.   

    --创建带输入参数的存储过程
    create procedure tt @re datetime output
    as
    set @re=getdate()
    go--调用存储过程,并取得返回值
    declare @i datetime
    exec tt @i output--显示取得的结果
    print @i
      

  5.   

    我在 pb8 中这样调用:
    DECLARE ue_pass PROCEDURE FOR usp_temp_table_para @a_engname=:ls_engname, @a_user=:gs_user,@a_result=:li_result OUTPUT;
    EXECUTE ue_pass;
    CLOSE ue_pass;sql server 中的 usp_temp_table_para 为:create procedure usp_create_temp_table_passdata @a_engname varchar(30),@a_user varchar(30),@a_result integer output
    asset @a_result = 1
    select dbo.chs(@a_result)
    print @a_result
    go
    但是不能得到 li_result 的正确值;
      

  6.   

    create procedure usp_temp_table_para  @a_engname varchar(30),@a_user varchar(30),@a_result integer output
    asset @a_result = 1
    select dbo.chs(@a_result)
    print @a_result
    go