ORA-00933 Fehler

declare
v_sql varchar2(32767);
begin
v_sql := ‚select artikel.anr, artikel.aname, artikel.details, artikel.lieferant, artikel.preis, artikel.katnr from artikel‘;
if :stuck_out_tongue:X_AUSGEWAEHLT is not null then
v_sql := v_sql || ‚where anr in (‘||replace(:stuck_out_tongue:X_AUSGEWAEHLT,’:’,’,’)||’)’;
else
v_sql := v_sql || ‚where 1=0‘;
end if;
return v_sql;
end;

Jetzt bekomme ich immer diese Fehlermeldung:

Die Abfrage kann nicht im Builder geparst werden. ORA-00933:SQL-Befehl wurde nicht korrekt beendet

Ich weiß nicht wo da was nicht beendet worden ist?!?!

declare
v_sql varchar2(32767);
begin
v_sql := ‚select artikel.anr, artikel.aname, artikel.details,
artikel.lieferant, artikel.preis, artikel.katnr from artikel‘;
if :stuck_out_tongue:X_AUSGEWAEHLT is not null then
v_sql := v_sql || ‚where anr in
(‘||replace(:stuck_out_tongue:X_AUSGEWAEHLT,’:’,’,’)||’)’;
else
v_sql := v_sql || ‚where 1=0‘;
end if;
return v_sql;
end;

– So ganzkurz reingeschaut, fehlt zwischen dem „From artikel“ und „WHERE“ ein Space…

  • Wäre cool, wenn du einfach das fertige SQL Statement posten würdest (der Inhalt von v_Sql…), das würde die Sache vereinfachen

Öhm ich weiß nicht was du meinst, das ist mein fertiges SQL Statement und ich weiß nicht was du mit dem WHERE meinst? Bin total verzweifelt sitze da nun schon 3 stunden dran grrr

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Öhm ich weiß nicht was du meinst, das ist mein fertiges SQL
Statement und ich weiß nicht was du mit dem WHERE meinst? Bin
total verzweifelt sitze da nun schon 3 stunden dran grrr

  • Nein, dass ist NICHT das fertige SQL. Das ist der Code, der das fertige SQL zusammenbastelt. Das „fertige“ SQL steht in deiner Variable v_SQL am schluss deines Codes. Der Inhalt dieser Variable ist interessant.
  • Mit dem „WHERE“ meine ich, das dein SQL-Statement fogendermassen aussieht (Dass vermute ich, da ich das fertige SQL nicht gesehen habe) :

SELECT blabla FROM ARTIKELWHERE bla=blabla

–> zwischen dem Tabellen(oder Viewnamen) ARTIKEL und dem Schlüsselwort WHERE fehlt ein LEERZEICHEN…

–> SELECT blabla FROM ARTIKEL WHERE bla=blabla (so sollte es sein)

Hmm ich habe sonst nix in die Variable v_sql geschrieben. Wo müsste ich die denn erstellen bzw was müsste darein?
Ich arbeite mit APEX bzw Application Builder von Oracle 10g Express.
Da wird das ganze ja auf einer Weboberfläche erstellt. Aber den SQL Befehl für einen Prozess z.B. für einen Button muss man dort dann selber generieren.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Huhu,

Ulrich Vaid hat wohl recht, da fehlt ein Leerzeichen

DECLARE
v\_sql VARCHAR2(32767);
BEGIN
v\_sql := 'select artikel.anr, artikel.aname, artikel.details, artikel.lieferant, artikel.preis, artikel.katnr from artikel ';
if :stuck\_out\_tongue:X\_AUSGEWAEHLT is not null then
v\_sql := v\_sql || 'where anr in ('||replace(:stuck\_out\_tongue:X\_AUSGEWAEHLT,':',',')||')';
else
v\_sql := v\_sql || 'where 1=0';
end if;
return v\_sql;
end;

Versuch einfach mal das Statement mit Copy/Paste auszutauschen.

Gruß
Andreas

Ohhh hab meinen Fehler gefunden, nach langem suchen, aber danke an alle :smile: