Which one is correct?
Die Prozedur wurde auf der Datenbank erstellt/implementiert. (Dativ)
Die Prozedur wurde auf die Datenbank erstellt/implementiert. (Akk)
in der Datenbank erstellt/implementiert
Also nicht auf, sondern in (eine Konvention: wir stellen uns die Datenbank als einen Behälter vor, der bestimmte Inhalte enthält).
Der Akkusativ wird verwendet, wenn etwas Fertiges in die Datenbank "befördert" (kopiert, übertragen, usw.) wird:
Die Prozedur kopierte zwei Tabellen aus einer Datenbank in die andere.
If the verb is "erstellen" or "implementieren", then is has to be dative case. But if it was another verb, like "speichern", then both versions would have been correct, but they mean marginal different things. And I think, that there are regional differences about the frequencies of the usage of both versions.
Dativ is used when you want to say, that something is happening at a place, without any movement to or from this place. Akkusativ is used if you want to describe, that there is a movement towards or onto a place, with the place as the target and endpoint of that movement.
Use Dativ here:
Ein Vogel sitzt auf dem Dach.
A bird sits on the roof. (You did not see the bird landing. It was sitting there all the time and is still sitting.)
Die Vase steht auf dem Tisch.
The vase stands on the table. (The vase was already there when you entered the room.)
Das Buch liegt auf der Bank.
The book lays on the bench. (It was there all the time and is not moving.)
Use Akkusative here:
Ein Vogel setzt sich auf das Dach.
A bird sits on the roof. (You watch the bird landing.)
Claudia stellt die Vase auf den Tisch.
Claudia puts the vase on the table. (You watch the movement.)
Robert legt das Buch auf die Bank.
Robert puts the book on the bench. (You watch the movement.)
As you can see in the example of the bird on the roof, sometimes the english sentence can mean both: The movement as well as the resting at a place. In German you clearly have to say if you mean the movement or the resting.
The examples above were easy, because you could clearly decide which was the movement and which was the resting, so you knew exactly which case to use.
But there are situations, where this is not so clear. For example, when you create something at a place.
Michael writes a sentence on the blackboard.
Michael creates a new sentence by moving a pen or a piece of chalk across the surface of the blackboard. Is this a movement towards the board? (Then it had to be accusative case.) Or is it resting at a place? (That would mean dative case.)
I would say It's none of them for 100% and at the same time a little bit of both.
You can think of it this way: Michael had this sentence in his head before, and is transporting this sentence onto the board. The act of transportation is the act of writing. So the sentence is moving from Michael towards the board:
Michael schreibt einen Satz an die TafelAkk..
But you can also claim, that Michael is performing something on the board's surface, without any movement towards the board. An effect of this performance is a sentence that appears on the board:
Michael schreibt einen Satz an der TafelDat..
Both versions are correct and both versions are in use. You can read both versions in German books, and you will hear both versions when you listen to native speakers. Maybe in some regions you hear one version much more often than the other, bot both versions are of the same quality.
Now let's look at your example:
Die Prozedur wurde auf der DatenbankDat. erstellt.
This means: You are doing something at the database, and the result of this action is, that a procedure appears at the database.
On the other hand:
Die Prozedur wurde auf die DatenbankAkk. erstellt.
This describes a movement from somewhere else, and the target of this movement is the database. But "erstellen" (to create) has not such a big part of movement in its meaning. So accusative case might not be the best choice.
But let's replace "erstellen" (to create) by "speichern" (to save):
- Die Prozedur wurde in der DatenbankDat. gespeichert.
- Die Prozedur wurde in die DatenbankAkk. gespeichert.
Now you have the same situation as with writing on a board. Both versions are allowed. The dative-versions means, that something is happening inside the database, and the result is a procedure, that is stored there. The accusative-version means, that the procedure was moved from somewhere else into the database, with the same result (stored inside the database).