存储过程:
CREATE PROCEDURE pro_select
@table varchar(50),
@outstr varchar(50) output
AS
  select systemid,systemname from Tsystem where tablename=@table
  set @outstr='gigi'
  return 5
GO用dbExpress的SQLStoredProc:
   SQLStoredProc1的属性已经连接好。
   用代码获得返回、输出值:
      SQLStoredProc1.Close;
      SQLStoredProc1.Params.Items[1].Value:='Tsystem';
      SQLStoredProc1.Open;
      //返回值
      showmessage(SQLStoredProc1.Params.Items[0].value);
      //输出值
      showmessage(SQLStoredProc1.Params.Items[2].value);用ADO的ADOStoredProc:
   ADOStoredProc1的属性已经连接好。
   用代码获得返回、输出值:
     ADOStoredProc1.Close;
     ADOStoredProc1.Parameters.Items[1].Value:='Tsystem';
     ADOStoredProc1.Open;
     showmessage(ADOStoredProc1.Parameters.Items[0].value);//返回值
     showmessage(ADOStoredProc1.Parameters.Items[2].value);//输出值为什么在ADO可以,而在dbExpress却不能获得返回值、输出值???
如何在dbExpress获得?

解决方案 »

  1.   

    你用dbExpress+SQL2000用存储过程没出错吗?
      

  2.   

    你的Delphi是什么版本,我试过Delphi 7.0 用dbExpress+SQL2000用存储过程是出错的,在csdn上面查到提到该问题的也没一个能把问题解决。
      

  3.   

    to:tianxzhao(天璇)
       我的是dbExpress+SQL2000。
       我的存储过程没错,能查询数据,就是不能返回值(一直是0)和输出值(为空)
      

  4.   

    将SchemaName属性设置为dbo,然后StoredProcName选择就可以用了,选择你的存储过程,Params属性中会有一个result类型的参数,这个就是返回值了。
      

  5.   

    to: getit911(Windows转Linux中)
        在我的问题中SQLStoredProc1.Params.Items[0]就是result类型的,
        但showmessage(SQLStoredProc1.Params.Items[0].value)一直是0。
      

  6.   

    我查了网上一些例子,都说加set nocount on可以搞定。但我不知道set nocount on放在什么地方?
      

  7.   

    set nocount on,是不是放在存储过程里?
      

  8.   

    set nocount on放到存储过程的第1行
      

  9.   

    用set nocount on的方法,大家试过吗?
      

  10.   

    是不是DBexpress Driver 有BUG,要到网上下载吗?