我用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?
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?
-----
仔细看看sql语句
Year_Begin = :fBegin, Year_End = :fBegin
把Year_Begin、Year_End都设置成了fBegin
SQL.Add('Where Year = :sYear');//多加了个参数[fEnd]
showmessage(sql.Text );
Parameters.ParamByName('fBegin').Value := 100;
Parameters.ParamByName('fEnd').Value := 200;//这里重新设置试试
Parameters.ParamByName('sYear').Value := '2002';