我在delphi放一个AdoStoredProc,连到数据库中的ABC存储过程,设置好参数,运行要超时,但我在SQL查询分析器中  execute ABC '2005-01-01','2005-03-01' 执行,马上得出数据记录。请问这是为什么呀?

解决方案 »

  1.   


     with DM.vJF_rep_pro(存储过程) do
        begin
          Close;
          Parameters[1].Value := DateToStr(dtp_bdate_pro.Date);(参数一)
          Parameters[2].Value := DateToStr(dtp_edate_pro.Date);(参数二)
          Open;
        end;
      

  2.   


     with DM.vJF_rep_pro(存储过程) do
        begin
          Close;
    //好像第一个参数是从0开始
          Parameters[0].Value :=FormatDateTime('yyyy-mm-dd',dtp_bdate_pro.Date);(参数一)
          Parameters[1].Value := FormatDateTime('yyyy-mm-dd',dtp_edate_pro.Date);(参数二)
          Open;
        end;
      

  3.   

    其实在delphi中和在SQL查询分析器中执行同样的SQL语句:execute ABC '2005-01-01','2005-03-01'delphi中执行要超时,而在sql查询分析器中就会马上显示数据记录的,不知道是什么原因
      

  4.   

    执行存储过程应该用execproc之类的方法吧,能够用open来执行吗???
      

  5.   

    (1)参数下标是从0开始的,不是从1开始。
    (2)你的存储过程有返回记录集吗?
    如果有,请用Open方法;
    如果没有,请用ExecProc方法。
    (3)在执行存储过程之前,不论是用(2)中的哪一种方法,最好
    调用.Prepared:= True。
      

  6.   

    不用AdoStoredProc;
    直接用
    Adoquery.sql.clear;
    Adoquery.sql.add('execute ABC ''2005-01-01'',''2005-03-01''');
    ADOQuery.ExecSQL;
    看看