delphi 7 存储过程要先关闭,否则结果集会缓存

i:Integer;

begin

Result := '';

adoProcInfo.Close;//奇怪,要先关闭,否则结果集还是上次的

adoProcInfo.Parameters.Clear;

adoProcInfo.Parameters.CreateParameter('user', ftString, pdInput, 20, user);

adoProcInfo.Prepared := True;

//adoProcInfo.ExecProc;

adoProcInfo.Open;//有数据要用这个

//adoProcInfo.RecordCount

//ShowMessage(adoProcInfo.Parameters.ParamValues['ReturnValue']);

//ShowMessage(IntToStr(adoProcInfo.Fields.Count));

Result := Result + '<?xml version="1.0" encoding="GB2312" ?>';

Result := Result + '<UserInfo>';

Result := Result + '<User ';

Result := Result + 'ResultCode' + '="' + '0' + '" ';

Result := Result + 'ResultMsg' + '="' + '成功' + '" ';

if adoProcInfo.RecordCount > 0 then

begin

adoProcInfo.First;

for i := 0 to adoProcInfo.Fields.Count-1 do

begin

//MessageBox(0, PChar(adoProcInfo.Fields[i].Name), '', 0);

Result := Result + adoProcInfo.Fields[i].FieldName + '="' + adoProcInfo.Fields[i].AsString + '" ';

end;

end;

Result := Result + ' ></User>';

Result := Result + '</UserInfo>';