我用ado连接sql数据库,写了个存储过程如下,在过程中用一个变量(fBegin),付给两个字段(year_begin和year_end):
with adoquery1 do
begin    
    Close;
    Connection := adoConnection1;
    SQL.Clear;
    SQL.Add('Update SB_T_College_Teacher Set Year_Begin = :fBegin, Year_End = :fBegin');
    SQL.Add('Where Year = :sYear');
    showmessage(sql.Text );
    Parameters.ParamByName('fBegin').Value := 100;
    Parameters.ParamByName('sYear').Value := '2002';
    ExecSQL;
end;
execsql后,查找sb_t_college_teacher表,发现year_begin的值变成了100,year_end的没变,why?

解决方案 »

  1.   

    SQL.Add('Update SB_T_College_Teacher Set Year_Begin = :fBegin, Year_End = :fBegin');
    -----
    仔细看看sql语句
    Year_Begin = :fBegin, Year_End = :fBegin
    把Year_Begin、Year_End都设置成了fBegin
      

  2.   

    SQL.Add('Update SB_T_College_Teacher Set Year_Begin = :fBegin, Year_End = :fEnd');
        SQL.Add('Where Year = :sYear');//多加了个参数[fEnd]
        showmessage(sql.Text );
        Parameters.ParamByName('fBegin').Value := 100;
        Parameters.ParamByName('fEnd').Value := 200;//这里重新设置试试
        Parameters.ParamByName('sYear').Value := '2002';
      

  3.   

    你先这样测试一下,有没有值?SQL.Add('Update SB_T_College_Teacher Set Year_Begin = :fBegin, Year_End = Year_Begin');