存储过程本身没有任何问题,但调用时老报找不到参数,一下子却又好了,新建一个又是同样的问题。请问专家们,这是什么原因,怎样杜绝?
SQL存储过程
Delphi7调用

解决方案 »

  1.   

    仔细检查一下代码,出错要么在你的存储过程的参数声明部分,要么就是你的delphi代码参数赋植出问题了。
    你可以把你的存储过程的参数声明,最好还有你的dephi代码贴上来
      

  2.   

    Delphi中是经常碰到这样的问题。
    你应该先吧存储过程的参数先Refresh一下,然后给它们赋值。
      

  3.   

    with fmDBhrasst.SPckYCHZ do
                begin
                  Close;
                  ProcedureName:='atYCHZ;1';
                  Parameters.ParamByName('@mbadge').Value:='123';
                  prepared;
                  execProc;
                end;第五句报找不到参数
      

  4.   

    用query执行存储过程,ADOSP确实有时会出现这种情况。
      

  5.   

    with fmDBhrasst.SPckYCHZ do
    begin
      Close;
      ProcedureName:='atYCHZ;1';
      //如果存储过程的属性都是动态设定的话,加入下面
      with ADOStoredProc1.AddParameter do begin
        DataType := ftString;//参数类型
        Direction := pdInput;//输入还是输出
        Size := 20;//如果有必要,加上此属性
        Value := 'malathion';//参数值
      end;
      //Parameters.ParamByName('@mbadge').Value:='123';
    ////////////////
      execProc;
    end;
      

  6.   

    所有存储过程都是事先做好后存放在SQL Server上面的,
    我只是根据不同的需求动态送入不同的参数值,再返回不同的计算结果。
      

  7.   

    >>>所有存储过程都是事先做好后存放在SQL Server上面的,
    >>>我只是根据不同的需求动态送入不同的参数值,再返回不同的计算结果。是不是每次调用此ADOStroeProc控件,都会把包括存储过程名称等属性重新赋值?如果是的话就用上面的代码就可以了,但要在设计期把控件的Parameters属性里的参数全部删除。
      

  8.   

    很简单,把过程中每一个参数的ParamType由ptUnknown改成ptInput或其他(根据实际情况)便可.
      

  9.   

    老兄,每一个过程的参数的PatamType在建立过程时就已定义为ptInput
      

  10.   

    zzllabc(抱朴子--清心释累,绝率忘情):你好!根据你的方法,
    with ADOStoredProc1.AddParameter 
    这句编译通不过,属性里好象没有这个
      

  11.   

    应该是
    with fmDBhrasst.SPckYCHZ.AddParameter  do
    或者
    with fmDBhrasst.SPckYCHZ do
    begin
      Close;
      ProcedureName:='atYCHZ;1';
      //如果存储过程的属性都是动态设定的话,加入下面
      with AddParameter do begin
        DataType := ftString;//参数类型
        Direction := pdInput;//输入还是输出
        Size := 20;//如果有必要,加上此属性
        Value := 'malathion';//参数值
      end;
      //Parameters.ParamByName('@mbadge').Value:='123';
    ////////////////
      execProc;
    end;
      

  12.   

    根据你的方法,
    with ADOStoredProc1.AddParameter 
    这句编译通不过,属性里好象没有这个
    ----------------------------
    应该是with ADOStoredProc1.Parameters.AddParameter  do:(
      

  13.   

    Sorry,确实如楼上所说,疏忽了,这是从Delphi7帮助上拷贝下来的,看来Delphi的帮助也有不少Bug。