PDA

View Full Version : CREATE OR REPLACE PROCEDURE klappt nicht



becama
26-02-19, 09:55
Hi *all,

falls eine PROCEDURE bereits existiert klappt der REPLACE nicht. Die Kiste erstellt eine weitere PROCEDURE mit einem Namen aus den Anfangsbuchstaben der PROCEDURE und einem Zähler. Via Navigator kann ich das dann sehen. OS = 7.2 Was mache ich falsch?

Danke und Gruß

KingofKning
26-02-19, 10:38
was sagt dann wrkobjlck

GG 4112

becama
26-02-19, 10:52
kein Lock vorhanden, konnte mit DROP PROCEDURE löschen und dann wieder erstellen. Irgendwie scheint der REPLACE noch nicht so sauber zu funktionieren. Verzichte dann lieber auf REPLACE, werde zuerst löschen, dann erstellen. Das ist sicherer, schade, weil mehr Arbeit. DANKE

Fuerchau
26-02-19, 11:10
Den Drop kann man dem Create voranstellen und die SQL-Anweisungen mit ";" trennen.
Das geht dann als Script.

becama
26-02-19, 11:15
beim ersten Lauf wird dann der DROP doch abschmieren, weil die PROCEDURE noch nicht existiert, oder?

andreaspr@aon.at
26-02-19, 13:13
Ich schätze, dass der Specific-Name der Prozedur abweicht? Oder irgendwelche Leicher vorhanden waren und deshalb die Prozedur nicht einfach gelöscht hat.
Wenn du eine komplett neue Prozedur so erstellst und den CREATE OR REPLACE paar mal laufen lässt, sollte er immer die Prozedur korrekt ersetzen.
Wobei ich selbst, wegen genau diesen Problemen, lieber mit einem DROP & CREATE arbeite.

Und was das abschmieren beim DROP angeht, so kann man hier einfach den ERRLVL auf 21 setzen, dann werden diese ignoriert.

Fuerchau
26-02-19, 13:20
Ich verwende hierzu einfach RUNSQLSTM ... ERRLVL(40).
Bei Aufrufen aus dem OpsNav kann man das auch irgendwo einstellen.

becama
26-02-19, 13:26
OK, vielen Dank an die Beteiligten