近用学习DELPHI,关于直接调用存储过程并返回值看了老半天,也没有弄明白,
发贴求助,谢谢表tb如下:
 用户名  密码
   a     a
   b     b存储过程sp_1如下:
CREATE PROCEDURE  sp_1
@a varchar(50)
AS
  begin
  select * from tb where 用户名=@a
  end
GOdelphi中需要使用哪些控件,怎么调用sp_1,直接在DBGRID1中显示出相应的查询结果。不知道我写的清楚不清楚,谢谢

解决方案 »

  1.   

    补充一下,我用ADO连的数据库
      

  2.   


       FSP:= TADOStoredProc.Create(nil);
       FSP.ProcedureName:='存储过程名';
       FSP.Connection:=ADO链接对象
       with FSP.Parameters.AddParameter do
        begin
          Name:='@RETURN_VALUE';
          DataType := ftInteger;
          Direction := pdReturnValue;
          Precision := 10;
        end;
        with FSP.Parameters.AddParameter do
          begin
          Name:='@OID';
          DataType := ftGuid;
          Value:='值';
        end;
        FSP.ExecProc;
        if FSP.Parameters.ParamByName('@RETURN_VALUE').Value='-1' then
        begin
          Exit;
        end;
        FSP.Open;
      

  3.   

    楼主请结贴散分procedure TForm1.Button1Click(Sender: TObject);
    var
      FSP:TADOStoredProc;
      FADOConnection:TADOConnection;
    begin
      FADOConnection:=TADOConnection.Create(nil);
      FSP:= TADOStoredProc.Create(nil);
      try
        FADOConnection.LoginPrompt:=False;
        FADOConnection.ConnectionString:='';
        try
          FADOConnection.Open;
          FSP.ProcedureName:='sp_1';
          FSP.Connection:=FADOConnection;
          with FSP.Parameters.AddParameter do
          begin
            Name:='@RETURN_VALUE';
            DataType := ftInteger;
            Direction := pdReturnValue;
            Precision := 10;
          end;
          with FSP.Parameters.AddParameter do
            begin
            Name:='@a';
            DataType := ftString;
            Size:=50;
            Value:='test';
          end;
          FSP.ExecProc;
          if FSP.Parameters.ParamByName('@RETURN_VALUE').Value='-1' then
          begin
            Exit;
          end;
          FSP.Open;
        except
        end;
      finally
        if FSP.Active then FSP.Close;
        FreeAndNil(FSP);
        if FADOConnection.Connected then FADOConnection.Close;
        FreeAndNil(FADOConnection);
      end;
    end;
      

  4.   

    CREATE PROCEDURE  sp_1 
    @a varchar(50) 
    AS 
      begin 
      select * from tb where 用户名=@a 
      end 
    GO @a 是参数,执行时,需要传入,
    TADOStoredProc,是执行存储过程的,ADOQuery也可以的
    在delphi中,存储过程中的参数需要先创建,所以就有了FSP.Parameters.AddParameter hidelphi 写得很想写了,可以给分了