我在使用ASAStoredProc1存储过程的时候 想将 Active 改为 true 时它就提示我下面的信息了:The statement doesn't return a result-set我的存储过程代码为:
create procedure greater_r(in @a char(20),in @b char(20),out @c char(20))
begin
select @b=oprno,@c=cardno from oprcardinfor where cardno=@a
end我在调用系统存储过程sa_conn_info 是可以将Active改为true的呀~!
是不是我的存储过程有问题?

解决方案 »

  1.   

    @b为 in 类型 不能select @b=oprno...
      

  2.   

    请两位大哥说得明白一点点好吗? . . . 偶不太懂了啦~ . . T_T . . create procedure greater_r(in @a char(20),in @b char(20),out @c char(20))
    begin
    select @c=cardno from oprcardinfor where cardno=@a
    end对不起,写错了, 改成这样后 ASAStoredProc1 的 Active 还是不能改成True啊!
    还是提示 The statement doesn't return a result-set  这个东东啊~
    到底时什么回事咧?
      

  3.   

    你是怎么调用这个存储过程的?ASAStoredProc1.ExecProc;//
      

  4.   

    我将它放在一个按扭里调用了,我就是想让它在发生 插入记录 以后就自动动行嘛~
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
          AsaStoredProc1.StoredProcName:='greater_r';
          AsaStoredProc1.Prepare;
          AsaStoredProc1.ParamByName('@a').AsString:=(edit1.Text);
          AsaStoredProc1.ParamByName('@b').AsString:=(edit2.Text);
          AsaStoredProc1.ExecProc;      Edit3.Text:=AsaStoredProc1.ParamByName('@c').AsString;
      except
        showmessage('麦都无啦~!');
    end;
      

  5.   

    象返回纪录集的好像可以把,但是执行更新的操作,不返回纪录集就不能使用.active:=true;
      

  6.   

    不返回纪录集就不能使用.active:=true;
    用AsaStoredProc1.ExecProc;
    然後讀出返回參數;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
          AsaStoredProc1.StoredProcName:='greater_r';
          AsaStoredProc1.Prepare;
          AsaStoredProc1.ParamByName('@a').AsString:=(edit1.Text);
          AsaStoredProc1.ParamByName('@b').AsString:=(edit2.Text);
          AsaStoredProc1.ParamByName('@c).AsString:='?';
          AsaStoredProc1.ExecProc;      Edit3.Text:=AsaStoredProc1.ParamByName('@c').AsString;
      except
        showmessage('麦都无啦~!');
    end;