Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ORA-00917 Komma fehlt ?

725 views
Skip to first unread message

Reinhard Seiler

unread,
Jan 15, 2003, 9:01:48 AM1/15/03
to
Hallo,

in einer Prozedur (Oracle 9i) lese ich in einer Schleife eine PL/SQL-Tabelle
aus und
schreibe die Daten mittels INSERT INTO in eine Tabelle.
Das klappt in der Pozedur in anderen Fällen problemlos. Nur in diesem Fall
kommt immer
die ORA-00917 Fehlermeldung. Die Anzahl der benannten Spalten stimmt mit der
Anzahl
der einzufügenden Daten überein und ein fehlendes Komma kann ich beim besten
Willen
nicht entdecken. Die verwendeten Variablen sind alle korrekt definiert usw.
und werden
schon früher in der Prozedur korrekt verarbeitet.
Nun denke ich, dass diese Fehlermeldung eventuell von einem anderen Fehler
verursacht wird.
Kann das sein, und wenn ja in welcher Richtung muss ich dann suchen??

Im Voraus Danke

Reinhard


Andreas Ballenthin

unread,
Jan 15, 2003, 1:46:48 PM1/15/03
to
Hallo Reinhard,

> Kann das sein, und wenn ja in welcher Richtung muss ich dann suchen??

Erster Fehler, der mit einfällt: Maskierst Du in VARCHAR2- bzw.
CHAR-Felder auftretende ' richtig?

19:44:44 ABA_ABA9OLTP>create table temp (a number,b varchar2(30));

Tabelle wurde angelegt.

19:45:30 ABA_ABA9OLTP>insert into temp values (1,'Hase und'Igel);
insert into temp values (1,'Hase und'Igel)
*
FEHLER in Zeile 1:
ORA-00917: Komma fehlt


19:45:43 ABA_ABA9OLTP>insert into temp (a,b) values (1,'Hase und'Igel);
insert into temp (a,b) values (1,'Hase und'Igel)
*
FEHLER in Zeile 1:
ORA-00917: Komma fehlt

cu
Andreas

Stefan Graf

unread,
Jan 15, 2003, 2:01:23 PM1/15/03
to

Oracle kommt z.B. mit Strings die ein ' enthalten nicht klar. Für Oracle ist
da dann der Text zu Ende, was ja auch richtig ist, und danach muss ein Komma
folgen.
Ich benutze daher immer selber erzeugte INSERT-Scripts die aus einem ' eben
||CHAR(39)|| machen. Das geht immer.

Ähnliche Probleme gibt es teilweise mit Zeichen grösser 127 oder kleiner 32.
Ein weiteres Problem ist das &-Zeichen.

--
Stefan Graf


Detlef Rudolph

unread,
Jan 15, 2003, 4:51:31 PM1/15/03
to
Hallo Stefan,


> Ich benutze daher immer selber erzeugte INSERT-Scripts die aus einem ' eben
> ||CHAR(39)|| machen. Das geht immer.
>
> Ähnliche Probleme gibt es teilweise mit Zeichen grösser 127 oder kleiner 32.


Das sehe ich ja vielleicht noch ein.


> Ein weiteres Problem ist das &-Zeichen.

huups, warum das denn? Und wie behandelt man dann HTML-Texte, die man
abspeichern will und in denen explizit z.B. < in &lt; etc umgesetzt
worden ist?

Gruß, Det

Stefan Graf

unread,
Jan 16, 2003, 1:47:42 AM1/16/03
to

Die Datenbank kann es problemlos speichern und man kann solche String auch
mit SELECT wieder auslesen. Das Problem besteht nur beim INSERT mit SQLPLUS.
Das &-Zeichen interpretiert SQLPLUS als Aufforderung einen Wert von der
Console einzulesen.

--
Stefan Graf


Reinhard Seiler

unread,
Jan 16, 2003, 3:22:44 AM1/16/03
to
Danke für den Hinweis, aber die PL/SQL Tabelle wird aus einer
Datenbank-Tabelle gefüllt und die Daten darin sind i.O.

Reinhard

"Andreas Ballenthin" <ball...@gmx.de> schrieb im Newsbeitrag
news:3E25AC98...@gmx.de...

Reinhard Seiler

unread,
Jan 16, 2003, 3:27:22 AM1/16/03
to
Ich habe mir die Daten nochmal genau angesehen.
Sonderzeichen jeglicher Art sind nicht enthalten.

Reinhard


"Stefan Graf" <stefa...@bigfoot.com> schrieb im Newsbeitrag
news:b04b7t$lf0rr$1...@ID-10144.news.dfncis.de...

Reinhard Seiler

unread,
Jan 16, 2003, 3:35:51 AM1/16/03
to
Hallo,

danke für Eure Mühe.
Der Fehler war eine fehlende Klammer in einer geschachtelten
to_char(trunc( ) ) Formulierung.

Reinhard

ps. Da sucht man nach Kommas und Oracle meine eigentlich
Klammern.
<<seufz>>

"Reinhard Seiler" <reinhar...@lua.sms.sachsen.de> schrieb im
Newsbeitrag news:b03pk6$t0r$1...@S0DD0010.ihl.sachsen.de...

Guido Konsolke

unread,
Jan 16, 2003, 4:19:25 AM1/16/03
to
Hallo Reinhard,

vielleicht beim nächsten Mal den fraglichen Code gleich mitliefern?
Du hättest die Lösung bestimmt schneller gehabt.

Grüßt: Guido


"Reinhard Seiler" <reinhar...@lua.sms.sachsen.de> schrieb im

Newsbeitrag news:b05qsv$9ba$1...@S0DD0010.ihl.sachsen.de...

Reinhard Seiler

unread,
Jan 16, 2003, 5:54:19 AM1/16/03
to
Hallo,

das ist wohl wahr.

Reinhard

"Guido Konsolke" <Kons...@triaton.com> schrieb im Newsbeitrag
news:10427087...@news.thyssen.com...

Kay Kanekowski

unread,
Jan 16, 2003, 6:52:55 AM1/16/03
to
"Stefan Graf" <stefa...@bigfoot.com> wrote in message news:<b05kkc$lmpcd$1...@ID-10144.news.dfncis.de>...

> Das &-Zeichen interpretiert SQLPLUS als Aufforderung einen Wert von der
> Console einzulesen.

Hallo Stefan,

ganz so ist es nicht. Das & ist das Kennzeichen für eine
SQL*Plus-Variable. Wenn diese bei Erkennen nicht gesetzt ist,
erscheint eine Eingabeaufforderung. Die Variable wird dann für genau
dieses Auftreten gesetzt, beim nächsten Auftreten fragt SQL*Plus
wieder, es sei denn man benutzt &&, dann bleibt die Variable gesetzt.

Das & kann man aber auch ersetzen durch andere ggf. günstigere
Zeichen:

< verdi_takt:ort1@ > DEFINE PATHVAR
DEFINE PATHVAR = "d:\temp\" (CHAR)

< verdi_takt:ort1@ > select '&PATHVAR' from dual;

'D:\TEMP
--------
d:\temp\

< verdi_takt:ort1@ > set define #
< verdi_takt:ort1@ > select '&PATHVAR' from dual;

'&PATHVA
--------
&PATHVAR

< verdi_takt:ort1@ > select '#PATHVAR' from dual;

'D:\TEMP
--------
d:\temp\

hth
Kay

Guido Konsolke

unread,
Jan 17, 2003, 3:50:04 AM1/17/03
to

"Kathinka Wenz" schrieb...
> "Reinhard Seiler" <reinhar...@lua.sms.sachsen.de> wrote:
>
> > [dreifaches Fullquote]
>
> Wir helfen auch alle gerne bei PL/SQL- oder anderen Datenbank-Problemen,
> aber bitte, und das gilt für euch beide, lest http://learn.to/quote,
> bevor ihr weiter im Usenet schreibt. Nicht alle haben Standleitungen und
> nicht jeder möchste ständig den gleichen Text runterladen.
>
> Danke.
>
> Gruß, Kathinka
> --
> Tipps für Anfänger: http://www.rrr.de/~kathinka/newbie.htm
> Akronyme im Usenet: http://www.rrr.de/~kathinka/akronyme.htm

Hallo Kathinka,

danke für die Tipps. Ich werde versuchen, mich zu bessern.
Ich hoffe, diesmal war das Ganzzitat angemessen 8-))

Grüßt: Guido


0 new messages