The student was shot in the ankle at Forest High School and transported to a hospital with a wound not considered life threatening, said Kevin Christian, Marion Public Schools spokesman. The victim is 17.
A school resource officer heard a loud bang at 8:39 a.m., Marion County Sheriff Billy Woods told reporters.
Three minutes later, the officer took a 19-year-old suspect -- who's not a student -- into custody without incident, Woods said.
The motive is unclear for what's the 20th US school shooting this year.
"It's a shame what society has come to in that we even have to be here on a school campus," Woods said. "Society has changed since I was in school. ... We as a whole need to do something. My emotions are running rampant."
Woods and school officials said the resource officer's quick response and active shooter protocols at the school helped save lives.