By switching from:
FStoredProc.Connection := Conn;
FStoredProc.StoredProcName := 'spLog';
FStoredProc.Prepare; // or PrepareSQL
FStoredProc.Params[1].AsInteger := FMessageType;
FStoredProc.Params[2].AsString := FMessage;
FStoredProc.Params[3].AsInteger := FUserID;
FStoredProc.Execute;
To:
FStoredProc.Connection := Conn;
FStoredProc.StoredProcName := 'spLog';
FStoredProc.Params.CreateParam(ftInteger,'result',ptResult);
FStoredProc.Params.CreateParam(ftInteger, 'log_type',ptInput);
FStoredProc.Params.CreateParam(ftString,'log_msg',ptInput);
FStoredProc.Params.CreateParam(ftInteger,'log_user', ptInput);
FStoredProc.Params[1].AsInteger := FMessageType;
FStoredProc.Params[2].AsString := FMessage;
FStoredProc.Params[3].AsInteger := FUserID;
FStoredProc.Execute;
I only find this to be a problem when called from with a thread. Ok, well I suppose it's the finesse of the style
