ORA-12714: ungültige nationalen Zeichensatz angegeben
Hab ich ein problem mit der oracle-Datenbank ,die ich erstellt eine gespeicherte Prozedur, und ich wollte ein array von Artikel-ids, um dieses Verfahren, um die Daten auszuwählen, die nach array mit Elementen, die die Verwendung von "in" - Klausel,die Lösung zu dieser, wie ich fand, war um eine Funktion zu erstellen, und übergeben Sie einen string-Wert mit allen Element-ids getrennt durch ein Komma ,und diese Funktion gibt eine datatble mit einer Zeile für jedes Element-id.dieser Ansatz funktioniert gut, wenn ich versuche, es in Kröte in einer select-Anweisung,aber wenn ich es in der gespeicherten Prozedur bekomme ich eine seltsame Fehlermeldung
"ORA-12714: ungültige nationalen Zeichensatz angegeben"
nach der Suche nach dem Grund dafür, dass die Fehler, die ich gefunden, dass es ein bug in dieser version von oracle laut dieser Seite und es behoben wurde in eine oracle 10.2.0.4 patch und der genaue Grund ist, deklarieren Sie einen cursor für die Funktion gibt eine Tabelle mit Daten
Da es unmöglich ist, mich um die Benutzer, die arbeiten an einer live-Produktionsumgebung zum beenden der Server anwenden, die update-patch ,ich Frage mich, wenn eine Oracle-Experte kann mir helfen zu erklären, cursor und return, cursor anstelle von der Rückkehr der Tabelle.
meine Oracle-Funktion,Dank im Voraus
create or replace
FUNCTION SplitIDs(
v_List IN VARCHAR2)
RETURN RtnValue_Set PIPELINED
AS
SWV_List VARCHAR2(2000);
v_RtnValue Dt_RtnValue := Dt_RtnValue(NULL);
BEGIN
SWV_List := v_List;
WHILE (instr(SWV_List,',') > 0)
LOOP
FOR RetRow IN
(SELECT ltrim(rtrim(SUBSTR(SWV_List,1,instr(SWV_List,',') -1))) SelectedValue
FROM dual
)
LOOP
v_RtnValue.SelectedValue := RetRow.SelectedValue;
PIPE ROW(v_RtnValue);
END LOOP;
SWV_List := SUBSTR(SWV_List,instr(SWV_List,',')+LENGTH(','),LENGTH(SWV_List));
END LOOP;
FOR RetRow IN
(SELECT ltrim(rtrim(SWV_List)) SelectedValue FROM dual
)
LOOP
v_RtnValue.SelectedValue := RetRow.SelectedValue;
PIPE ROW(v_RtnValue);
END LOOP;
RETURN;
END;
Vielen Dank, das klappt einwandfrei.ich bin neu in Oracle,ich habe es in T-Sql und verwendet einen Konverter-tool konvertiert, PL-Sql
InformationsquelleAutor Khaled | 2010-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oracle sagt, diese über den Fehler:
Fehler: ORA-12714 (ORA-12714)
Text: ungültige nationalen Zeichensatz angegeben
Ursache: Nur UTF8 und AL16UTF16 verwendet werden dürfen, wie die nationalen Zeichensatz
Aktion: stellen Sie Sicher, dass die angegebenen nationalen Zeichensatz gültig ist
Überprüfen Sie Ihre NLS_NCHAR_CHARACTERSET das mithilfe:
select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';
Versuchen Sie es mit NCHAR, NVARCHAR2 oder NCLOB
InformationsquelleAutor DannyS