active是在设计期调用执行存储过程,execproc在运行期执行,并且不返回结果集,而open返回结果集,如下传入参数在服务器上就可以执行存储过程了.
    ADOStoredProc.Prepare;
    ADOStoredProc.Params[0].asstring:=edit1.text;
    ADOStoredProc.params[1].asinteger:=strtoint(edit2.text);
    ADOStoredProc.ExecProc;

解决方案 »

  1.   

     adostoredproc1.Prepared:=true;
     adostoredproc1.Active:=true;
     adostoredproc1.Open;
    上面的语句对吗?是不是能返回结果集?
      

  2.   

    那要看你调用的存储过程是怎么写的,是否需要传入参数,adostoredproc1.Active:=true去掉.
      

  3.   

    在SQL语句中有没有set nocount off或set nocount on这样的语句啊,若有什么意思啊?
      

  4.   

    如果反得调用,通常在调用前写:
    adostoredproc1.Close;
    adostoredproc1.Prepared:=true;
    adostoredproc1.Active:=true;//本句不需要Active与Open执行相同的动作
    //如果需要参数,应在这里逐一赋值
    adostoredproc1.Open;
    在SQL语句中set nocount off/On 表示是否统计结果集行数。
      

  5.   

    如果需要反复调用,通常在调用前写:
    adostoredproc1.Close;
    adostoredproc1.Prepared:=true;
    //adostoredproc1.Active:=true;//此句多余
    //如果需要传入参数写在这里
    adostoredproc1.Open;在SQL语句中有没有set nocount off/On 表示是否返回结果集行数。