[Oracle 9.2i] Problem mit einer Stored Procedure

Hallo, ich versuche gerade eine SP zu schreiben die mir eine Liste ausgeben soll, die allerdings nur noch ausgesuchte Werte enthält (z.B. alle Namen müssen mit ‚B‘ anfangen), was prinzipiell auch kein Problem darstellt. Allerdings sollte diese Liste auch noch sortiert werden können und deshalb gehe ich folgendermassen vor:

Function Adresse_Get(
i_ID_Adresse IN Number,
i_ID_Adresstyp in Number,
i_Sortierung in Varchar2,
i_Name1 in Varchar2
) Return TEST_PKG_TYPES.ref_Cursor
AS
cur TEST_PKG_TYPES.ref_cursor;

SQLCmd varchar2(1000);

BEGIN

if i_ID_Adresse is Null then
SQLCmd := ‚select ID_Adresse,
FK_Adresstyp,
Name1,
Name2,
Name3,
Strasse,
Hausnummer,
Plz,
Ort,
Land,
Tel,
Fax,
Mobil,
Email,
WebSite,
JuristischePerson,
UstID,
Ansp_Name,
Ansp_Tel,
Ansp_Fax,
Ansp_Mobil,
Ansp_Email,
Ansp_WebSite
from TEST_Adresse
where FK_Adresstyp =‘ || i_ID_Adresstyp || ’ AND deleted = 0 ';

else
SQLCmd := ‚select ID_Adresse,
FK_Adresstyp,
Name1,
Name2,
Name3,
Strasse,
Hausnummer,
Plz,
Ort,
Land,
Tel,
Fax,
Mobil,
Email,
WebSite,
JuristischePerson,
UstID,
Ansp_Name,
Ansp_Tel,
Ansp_Fax,
Ansp_Mobil,
Ansp_Email,
Ansp_WebSite
from TEST_Adresse
where ID_ADRESSE=‘ || i_ID_Adresse || ’ AND deleted = 0 ';

end if;

if i_Name1 is Not Null then
SQLCmd := SQLCmd || ’ AND Name1 like’ || i_Name1;
End if;

if i_Sortierung is Not Null then
SQLCmd := SQLCmd || ’ Order BY ’ || i_Sortierung;
end if;

OPEN cur For SQLCMD;
Return cur;
END;

Wenn ich die SP allerdings teste, kommt als Fehlermeldung:

ORA-00936: Ausdruck fehlt
ORA-06512: in „TEST_ADMIN.TEST_PKG_ADRESSE“, Zeile 166
ORA-06512: in Zeile 1

Mir fällt allerdings kein Fehler auf.
Kann mir bitte jemand weiterhelfen?

Schonmal danke im voraus.

Gruss
Alex

hi!

die hochkomma für das like fehlen

if i_Name1 is Not Null then
SQLCmd := SQLCmd || ’ AND Name1 like ‚‘|| i_Name1||’’ ';
End if;

grüße,
tomh

ps: debug-ausgaben von variablen und parameter zwischendurch sind nicht von schlechten eltern - vor allem, wenn diese variablen dynamische befehle enthalten

Hi,

nein, daran hat es leider nicht gelegen, danach funktionierte die StoredFunction gar nicht mehr.
Wie kann ich denn debug ausgaben machen lassen? (Vorallem wenn er die SP nicht richtig kompiliert [„wurde mit Fehlern erstellt“])

Schonmal danke!

Gruss
Alex

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

hi!

(Vorallem wenn
er die SP nicht richtig kompiliert [„wurde mit Fehlern
erstellt“])

hast du zwei ’ hingestellt oder nur ein "?

kommt noch immer dieselbe fehlermeldung?

grüße,
tomh

ps: leider fehlen die zeilennummern bei deinem beispiel …

Ich hatte ",
nicht ‚‘, geschrieben. War dies falsch?

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

hi!

Ich hatte ",
nicht ‚‘, geschrieben. War dies falsch?

nochmals: du brauchst kein doppelhochkomma sonder zwei, einzelne hochkommas (sprich: tipp zweimal aus shift-#, dann hast du das richtige) " != ‚‘ (" bedeutet in oracle absolut nix)

grüße,
tomh

Hallo Tomh,

ich hab jetzt die zwei ’ an der Stelle eingefügt und jetzt kommt:

ORA-01756: Anführungsstrich fehlt bei Zeichenfolge
ORA-06512: in „KRYO_ADMIN.KRYO_PKG_ADRESSE“, Zeile 168
ORA-06512: in Zeile 1

In Zeile 168 steht:

OPEN cur For SQLCMD;

Gruß
Alex

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