下面是我的文章,有人把它翻译成了中文。  本文为你演示怎样在客户端执行存贮过程。
  假如你的存贮过程返回一个数据集,那你需要调用 TStoredProc 的 Open 方法,然后,只需要使用 TDataSetProvider 来连接它就行了。效果很好。
  假如你的存贮过程不返回一个数据集,这就意味着需要调用 TStoreProc 的 ExecProc 方法。步骤是:
  1 为你的接口增添一个方法
  
  procedure ExecProc(Params: Integer); 
  
  2 在 remote data module中写实现代码
  
  procedure ExecProc(Params: Integer); 
     begin 
       StoredProc1.ParamByName('@Param').AsInteger := Params; 
       StoredProc1.ExecProc; 
  end; 
  
  3 在客户端,调用此过程
  
  DComConnection1.AppServer.ExecProc(1); 
  
  That is Ok.

解决方案 »

  1.   

    在应用程序层的数据Module数据模块中使用ADOQuery1的sql属性:
      select count(用户) as count from 用户信息表 where 用户名=:user and  密码=:passwd 
      在客户端的登录中对user和passwd进行赋值,使用Module.ADOqUERY1.OPEN的返回值登陆验证;
      

  2.   

    多谢各位的关注,应该说你们的方法从不同的角度解决了问题,尤其是chechy的解答更是恰中肯綮,但是,是不是有更为简介的方法呢。我的存储过程如下:
    CREATE procedure loginconfirm
    @username char(20),
             @password char(20),
             @flag bit //返回值,用于客户端的进一步处理。
    as
    declare  @userID UNIQUEIDENTIFIER  / /在用户验证表中的newid()自动生成,用于判别是否有该记录。SELECT @userID = userID
    FROM user_info
    WHERE username = @username and psword = @passwordif @userID is null 
    begin
      set @flag = 0
    end
    if @userID is not null
    begin
      set @flag = 1
    end
    GO
    然后,在remote data module中加一个tadostoredproc
    procedure name:loginconfirm
    prepared:true
    paremeters中自动出现了四个参数
    用数据provider相连客户端clientdataset连接provider
    我认为应该 相当于直接调用了存储过程
    dataset获取参数时也显示了参数表
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      clientdataset1.Params[2].Value :=strtoint(edit1.text);
      clientdataset1.Params[3].value :=strtoint(edit2.text);
       edit3.text:=inttostr(clientdataset1.Params[4].Value) ;
    end;
    结果无法调通,错误莫名其妙
    我相信一定有更为简洁的方法解决这个问题。
    chechy的方法就是要再写代码,不是很方便,但是能解决问题,问题解决了我给你加分;rwdx的方法是个思想,太简略,我也试过,能用,太麻烦,会相应加分;ljq的方法又是一个思路,非常有启发性,一并会加分。
    重要的不是分数,是帮忙的这份侠义,谢谢。
    希望有人再参与一下。