各位前辈,存储过程的调用我不是很熟悉,请多指教
我的存储过程:
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'score_statistic' AND type = 'P')
   DROP PROCEDURE score_statistic
go
create procedure score_statistic 
@examination_time int,
@class_number int
as
select count(座号)as 全班参加考试人数,avg(语文)as 语文,avg(数学)as 数学,avg(英语)as 英语,avg(综合)as 综合,avg(物理)as 物理,
       avg(化学)as 化学,avg(政治)as 政治,avg(历史)as 历史,avg(生物)as 生物,avg(总分)as 总分
from 成绩
where 班级=@class_number and 时间顺序值=@examination_time 在sql查询分析器中
写入如下语句:
execute score_statistic 2,5  (注:时间顺序0-5表示各次考试的时间顺序)
结果:
全班参加考试人数  语文 数学 英语 综合 物理 化学 政治 历史 生物 总分
XX                XX   XX   XX   XX   XX   XX   XX   XX   XX   XX我想把这个结果现在在DBGrid中,怎样实现,谢谢!    

解决方案 »

  1.   

    adoquery1.active:=false;
    adoquery1.sql.clear;
    adoquery1.sql.add('execute score_staticstic 2,5');
    adoquery1.execsql;
    datasource1.dataset:=adoquery1;
    dbgrid1.datasource:=datasource;用adocommand也可以的,
      

  2.   

    存储过程最好用TADOStoredProc  with datam1.ADOStoredProc1 do
      begin
        active:=false;
        Parameters.ParamByName('@examination_time').Value:=3453;
        Parameters.ParamByName('@class_number).Value:=34534;
    //输入参数
        open;
    //记得用open才能显示出来
      end;
      

  3.   

    adoquery1.active:=false;
    adoquery1.sql.clear;
    adoquery1.sql.add('execute score_staticstic 2,5'); 
    adoquery1.Open;            //*************
    datasource1.dataset:=adoquery1;
    dbgrid1.datasource:=datasource;
      

  4.   

    谢谢!那么能否在dbgrid中显示多行数据,现在的存储过程执行后只能显示一行数据,请问各位老大和楼上几位,怎样实现?
      

  5.   

    敢问楼上,那怎样才能把多个班级的统计数据同时显示在dbgrid中呢?
      

  6.   

    问题已经解决了,谢谢楼上几位热心相助,最后我的解决方法是:在存储过程中利用union 捆绑 多 个select语句来实现的。