ORA-12714: указан неверный набор национальных символов - PullRequest
1 голос
/ 25 июля 2010

У меня проблема с базой данных оракула, я создал хранимую процедуру и хотел передать массив идентификаторов элементов в эту процедуру, чтобы выбрать данные в соответствии с массивом элементов, используя предложение «in», доступное решение для этогоя обнаружил, что нужно создать функцию и передать строковое значение со всеми идентификаторами элементов, разделенными запятой, и эта функция будет возвращать таблицу данных со строкой для каждого идентификатора элемента. Этот подход работает хорошо, когда я пробую его в toad в selectоператор ,, но когда я использую его в хранимой процедуре, я получаю странную ошибку

"ORA-12714: указан неверный набор национальных символов"

после поиска причины этой ошибки, которую я нашелчто это ошибка в этой версии oracle согласно этой странице, и она была исправлена ​​в патче oracle 10.2.0.4, и точная причина состоит в том, чтобы объявить курсор для функции, которая возвращает таблицу данных

.я не могу позволить пользователям, которые работают в рабочей среде, останавливать серверы для установки обновленийЯ хотел бы знать, может ли какой-нибудь эксперт Oracle помочь мне объявить курсор и вернуть его вместо возврата таблицы.

моя функция Oracle, спасибо заранее

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;

1 Ответ

1 голос
/ 26 июля 2010

Оракул говорит об ошибке:

Ошибка: ORA-12714 (ORA-12714)

Текст: указан неверный набор национальных символов

Причина: только UTF8 и AL16UTF16 могут использоваться в качестве национального набора символов

Действие: убедитесь, что указанный национальный набор символов действителен

Проверьте ваш NLS_NCHAR_CHARACTERSET, который установлен с помощью:

выбрать значение из NLS_DATABASE_PARAMETERS, где параметр = 'NLS_NCHAR_CHARACTERSET';

Попробуйте использовать NCHAR, NVARCHAR2 или NCLOB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...