我是通过如下方法做的:
  ADOStoredProc1.Connection :=ADOConnection1;
   ADOStoredProc1.ProcedureName:='test_prc;1';
with ADOStoredProc1.Parameters.AddParameter do
    begin
     Name:='@pdReturn_Value';
     Direction:=pdpdReturnValue;
     DataType:=ftInteger;
     Value:=Edit1.Text;
    end;
    
    with ADOStoredProc1.Parameters.AddParameter do
    begin
     Name:='@st';
     Direction:=pdInput;
     DataType:=ftString;
     Value:=Edit1.Text;
    end;
    with ADOStoredProc1.Parameters.AddParameter do
      begin
      Name:='@result';
      Direction:=pdInputOutput;
      DataType:=ftInteger;
      end;      
而如果不是ADDParameter.而通过Parameters[I]赋值,就出错