2015-08-12 8 views
0

Я пытаюсь использовать PL/JSON в форме Oracle 11g.Использование PL/JSON в формах оракула 11g

Когда я запускаю следующий код (взятый из примера файла ex1.sql из PL/JSON) непосредственно в базе данных, он отлично работает.

declare 
    obj json; 
begin 
    obj := json('{"a": true }'); 

    obj.print; 
    --more complex json: 
    obj := json(' 
{ 
    "a": null, 
    "b": 12.243, 
    "c": 2e-3, 
    "d": [true, false, "abdc", [1,2,3]], 
    "e": [3, {"e2":3}], 
    "f": { 
    "f2":true 
    } 
}'); 
    obj.print; 
    obj.print(false); --compact way 
end; 
/

возвращение

{ 
    "a" : true 
} 
{ 
    "a" : null, 
    "b" : 12.243, 
    "c" : 0.002, 
    "d" : [true, false, "abdc", [1, 2, 3]], 
    "e" : [3, { 
    "e2" : 3 
    }], 
    "f" : { 
    "f2" : true 
    } 
} 
{"a":null,"b":12.243,"c":0.002,"d":[true,false,"abdc",[1,2,3]],"e":[3,{"e2":3}],"f":{"f2":true}} 

Теперь я хочу использовать ту же логику, но непосредственно в форме 11g Oracle с помощью следующего кода.

PROCEDURE Ex1_Test IS 
    obj json; 

begin 
    obj := json('{"a": true }'); 

    :MyField1 := obj.to_char; 
    --more complex json: 
    obj := json(' 
{ 
    "a": null, 
    "b": 12.243, 
    "c": 2e-3, 
    "d": [true, false, "abdc", [1,2,3]], 
    "e": [3, {"e2":3}], 
    "f": { 
    "f2":true 
    } 
}'); 

    :MyField2 := obj.to_char; 

    :MyField3 := obj.to_char(false); --compact way 

end; 

Тогда я получаю общую внутреннюю ошибку от Oracle ORA-00600 : internal error code в строке 7 :MyField1 := obj.to_char;.

Что я делаю неправильно? Это то, что я пытаюсь сделать, невозможно?

Благодарим за помощь! :)

+0

Возможно, вам лучше сохранить такой код в пакетах PL/SQL на сервере базы данных и вызывать их из форм, а не выполнять этот код в формах Oracle. –

+0

Да, после ответа APC ниже, это то, что я сделал, и он работает нормально. – Mojoe31

ответ

1

ORA-00600 - это код Oracle для «необработанных побочных эффектов», то есть ошибок. Должна быть дополнительная информация в журнале предупреждений. Стандартным советом ORA-00600 является обращение в службу поддержки Oracle.

Если у вас нет контракта на поддержку, ваши варианты ограничены. Сообщение ORA-00600 должен прийти с одним или более аргументов в квадратных скобках, как этот

ORA-00600: internal error code, arguments: [17069], [55573516], [], [], [], [], [], [] 

Эти аргументы полезны для выявления конкретных причин (первое число обычно указывает номер ошибки Oracle, документированные или иным образом). Вы можете попробовать Googling для них.

Что касается вашего конкретного случая, я боюсь, что мы можем только догадываться. Метод объекта JSON.TO_CHAR() вызывает функцию пакета PL/SQL, JSON_PRINTER. Это может быть проблемой. Формы PL/SQL разделяют синтаксис с базой данных PL/SQL, но они разные; возможно, вы столкнулись с ошибкой в ​​том, как Forms PL/SQL работает с типами SQL, которые имеют зависимости.

+0

Я должен был указать, что все скобки ORA-00600 пусты. Спасибо за подсказку о зависимостях. Я постараюсь разобраться в этом. – Mojoe31

 Смежные вопросы

  • Нет связанных вопросов^_^