prepared 的 地方不对应在附值之前
ADOStoredProc1.ProcedureName:='@p_sel;1';
  ADOStoredProc1.Prepared;
  ADOStoredProc1.Parameters.ParamByName('@dname').Value:='dd';
  ADOStoredProc1.ExecProc; 
试一试

解决方案 »

  1.   

    要用默认参数:
    create procedure dbo. p_sel
     @dname char(10)=null as 
    select * from dd where dname=@dname
    GO
      

  2.   

    调用过程如下方式:
    ADOStoredProc1.ProcedureName:='@p_sel;1';
    ADOStoredProc1.Parameters.AddParameter;
    ADOStoredProc1.Parameters[0].name:='@dname';
    ADOStoredProc1.Parameters.ParamByName('@dname').Value:='dd';
    ADOStoredProc1.ExecProc;
      

  3.   

    用默认参数:create procedure dbo. p_sel
     @dname char(10)=null as 
    select * from dd where dname=@dname
    GO