为何用adostoredproc就是不能实现存储过程,但是换成了storedproc和adoquery都能够实现?(存储过程语句本身没有问题,在数据库中已经验证过了)
tj.Close;
tj.Parameters.ParamByName('@begin_time').Value:=time1.DateTime;
tj.Parameters.ParamByName('@end_time').Value:=time2.DateTime;
if not tj.Prepared then tj.Prepared;
TJ.ExecProc;
这段程序无法执行,要不提示:没有可选择执行特性,或者是执行跟不执行是一样的--得不到任何的结果。
////////////下面的能够实现的两个都能够实现
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('exec store_tj');
adoquery1.SQL.Add('@begin_time='+#39+datetostr(time1.Date)+#39',@end_time='+#39+datetostr(time2.Date)+#39'');
adoquery1.Prepared;
adoquery1.ExecSQL;
////////////////////////////
storedproc1.Close;
storedproc1.ParamByName('@begin_time').AsString:=datetostr(time1.Date);
storedproc1.ParamByName('@end_time').AsString:=datetostr(time2.Date);
if not storedproc1.Prepared then storedproc1.Prepare;
storedproc1.ExecProc;   哪位高手能不能给菜鸟解释一下,谢谢!

解决方案 »

  1.   

    tj.Close;
    tj.ProcedureName := 'store_tj';
    tj.Parameters.ParamByName('@begin_time').Value:=time1.DateTime;
    tj.Parameters.ParamByName('@end_time').Value:=time2.DateTime;
    if not tj.Prepared then tj.Prepared;
    TJ.ExecProc;
      

  2.   

    楼上的还是不行的,我的tj(Tadostoredproc)的存储过程名已经设置为'store_tj',但是提示没有找到参数@begin_time
      

  3.   

    那就:
    tj.Close;
    tj.ProcedureName := 'store_tj';
    tj.Parameters.Clear;
    tj.Parameters.Add;
    tj.Parameters.Add;
    tj.Parameters.ParamByName('@begin_time').Value:=time1.DateTime;
    tj.Parameters.ParamByName('@end_time').Value:=time2.DateTime;
    if not tj.Prepared then tj.Prepared;
    TJ.ExecProc;
      

  4.   

    哎呀:
    tj.Parameters.ParamByName('begin_time').Value:=time1.DateTime;
    tj.Parameters.ParamByName('end_time').Value:=time2.DateTime;