The incident took place at Lloyd Gymnasium, a grammar school in Bremerhaven, a city in Germany. One woman has been seriously injured and has been taken to the Reinkenheide hospital. She is thought to have been an employee of the school.
The police were called after a student heard shots being fired.
The girl, who was in the bathroom at the time, contacted the emergency services.
Forces are currently searching the school.
Meanwhile, upper school students are still in their classrooms and have barricaded themselves in.
A suspected perpetrator has been arrested and a second is thought to be on the run.
There has been speculation that the perpetrator was using a crossbow, but this has not yet been confirmed.
Officers are currently searching the school.
There are currently more than 200 pupils still in the building.
Many students were absent from the school today as a result of secondary school examinations, taking place today.
People have been urged to avoid the surrounding area.
In a statement, Bremerhaven Police said: “This morning, the Bremerhaven police were alerted to the Lloyd-Gymnasium (sixth form) on Grazer Straße in Bremerhaven-Mitte.
“According to initial information, an armed perpetrator had injured another person, who was NOT a pupil, with a weapon. The armed person was arrested and is in police custody.
“The injured person is in hospital.
“The students are in their classrooms with their teachers.
“The police have the situation on site under control. The police measures are continuing.”
Providing an update on Twitter, the force added: “There is currently a major #police operation in the city centre of Bremerhaven.
“Details will be announced by the #Bremerhaven police later.
“Please avoid the Bgm.-Martin-Donandt square and the surrounding streets.”
A number of parents have gathered in front of the school, after being notified by their children.
The Red Cross, the Federal Agency for Technical Relief and voluntary humanitarian organisation the Johanniter are all at the scene.
Additional reporting by Monika Pallenberg.
UPDATES TO FOLLOW…