ich bin ganz neu im PL/SQL Umfeld und weiss mir leider so langsam nicht mehr zu helfen. Ich habe schon bei Google gesucht, aber die gefundenen Lösungsvorschläge brachten bei mir nicht den erhofften Erfolg. Folgende PL/SQL Prozedur bekomme ich einfach nicht zum Laufen:
CREATE OR REPLACE PROCEDURE Up_Datei(new_datname varchar2, p_datno number)
IS
BEGIN
Update datei
SET datname = ‚new_datname‘
where datno = ‚p_datno‘;
commit;
END Up_Datei;
/
DECLARE
p_no number := ‚99‘;
n_name varchar2(10) := ‚TEST‘;
BEGIN
Up_Datei(n_name, p_no);
END;
/
Ich habe anstatt der Zeile p_no number auch schon versucht p_no integer zu nehmen, das ging aber auch nicht, der Fehler war der gleiche.
Ich hoffe ihr könnt mir helfen, ich weiss nicht was ich noch versuchen soll
Danke schonmal an Euch
ist falsch, weil’p_datno’ ein String ist.
Gruß, muzel
Hallo muzel,
aber warum ist es ein String? ich will die ‚99‘ an die Prozedur übergeben. die Variable p_no ist vom Typ NUMBER. Und meine Prozedur fängt sie doch auch mit p_datno NUMBER auf?
Ich versteh noch nicht ganz was ich falsch mache óÓ
ich hab den Aufruf wie von dir geschrieben verändert. Jetzt kommt der nächste Fehler Jetzt ist auf einmal meine Prozedur ungültig. Ich hab schon alles Mögliche ausprobiert, aber ich kriegs nicht hin. Wahrscheinlich liegt der Fehler wieder direkt vor meiner Nase und ich komm einfach nicht drauf
Also:
a) Die Prozedur ist fehlerfrei kompilierbar?
b) Wieso rufst Du die Prozedur als SYSTEM-User auf?
c) Hat der aufrufende User auch alle Berechtigungen?
d) Gibt es Synonyme auf diese Prozedur?
e) Was sagt ein „select * from dba_objects where object_name=‚UP_DATEI‘;“?
@Georg
Ich habs auch nochmal in SQL Plus probiert, dort funktioniert es
Danke schonmal dafür
Jetzt muss ich es nur noch im SQL Developer hinkriegen óÓ
@Tomh
zu a) Die Prozedur ist fehlerfrei kompilierbar?
Ja die Prozedur lässt sich im SQL Developer ohne Probleme kompilieren.
zu b) Wieso rufst Du die Prozedur als SYSTEM-User auf?
Naja ich habe die Datenbank bei mir installiert und es wurde während der Installation nur nach einem Passwort für den User SYSTEM gefragt. Ich konnte keine weiteren anlegen. Der Beispieluser scott mit PW tiger funktioniert auch nicht. Ich bin ja aber wie gesagt noch blutiger Anfänger im Thema Datenbanken. Sollte ich nicht den SYSTEM User nehmen?
zu c) Hat der aufrufende User auch alle Berechtigungen?
Der aufrufende User ist doch bei mir im Moment SYSTEM ? Ich denke der sollte doch alle Berechtigungen haben?
zu d) Gibt es Synonyme auf diese Prozedur?
Also ich habe nichts erstellt, das der Prozedur Up_Datei auch nur entfernt ähnlich sieht óÓ
zu e) Was sagt ein „select * from dba_objects where object_name=‚UP_DATEI‘;“?
Das sagt gar nichts. Es zeigt ein paar Spalten an, die sind aber ohne Inhalt. Ich habe die Prozedur aber gerade extra nochmal neu angelegt. Da muss doch irgendwas rauskommen eigentlich?
So ich habs jetzt endlich auch im SQL Developer hingebkommen
Das Statement wie Georg es verbessert hatte funktionierte ja schon in SQL Plus. Es lag wohl an den Hochkommata, deswegen dachte die Datenbank, dass es sich um einen String handelt, der ja logischerweise nicht vom Datentyü NUMBER ist.
In SQL Plus hab ich dann auf der linken Seite endlich mal gesehen, dass man sich da die erstellten Prozeduren auch ansehen kann ^^ Da dann auf die Prozedur rechtsgeklickt, comile for debug und einen letzten kleinen Syntaxfehler gefunden.
Funktioniert jetzt alles wunderbar, danke Leute für die tolle Hilfe