When you're trying to update and select information at the same time, wouldn't it be simpler to use OUTPUT:
UPDATE dbo.Book
SET LastAccess = GETDATE()
OUTPUT INSERTED.Title, INSERTED.Author
WHERE BookId = @BookId
(I believe you can get similar results in Oracle with RETURNING)