在 Oracle Forms 11g 中使用 PL/JSON
Using PL/JSON in oracle forms 11g
我正在尝试在 Oracle 11g 表单中使用 PL/JSON。
当我直接在数据库上 运行 以下代码(取自 PL/JSON 的示例文件 ex1.sql)时,它工作正常。
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}}
现在,我想使用相同的逻辑,但直接在 Oracle 11g 表单中使用以下代码。
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;
然后我在第 7 :MyField1 := obj.to_char;
.
行收到来自 Oracle ORA-00600 : internal error code
的一般内部错误
我做错了什么?难道我想做的事不可能吗?
感谢您的帮助! :)
ORA-00600 是 Oracle 的 "unhandled side effects" 代码,即错误。警报日志中应该有一些额外的信息。标准的 ORA-00600 建议是联系 Oracle 支持。
如果您没有支持合同,您的选择将受到限制。 ORA-00600 消息应在方括号中包含一个或多个参数,如下所示
ORA-00600: internal error code, arguments: [17069], [55573516], [], [], [], [], [], []
这些参数对于识别具体原因很有用(第一个数字通常表示 Oracle 错误号,记录或其他)。您可以尝试使用谷歌搜索它们。
至于你的具体情况,恐怕我们只能推测。对象方法 JSON.TO_CHAR()
调用一个 PL/SQL 包函数,JSON_PRINTER
。这可能是问题所在。表单 PL/SQL 与数据库 PL/SQL 共享语法,但它们是不同的引擎;您可能遇到了 Forms PL/SQL 如何与具有依赖关系的 SQL 类型一起工作的错误。
我正在尝试在 Oracle 11g 表单中使用 PL/JSON。
当我直接在数据库上 运行 以下代码(取自 PL/JSON 的示例文件 ex1.sql)时,它工作正常。
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}}
现在,我想使用相同的逻辑,但直接在 Oracle 11g 表单中使用以下代码。
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;
然后我在第 7 :MyField1 := obj.to_char;
.
ORA-00600 : internal error code
的一般内部错误
我做错了什么?难道我想做的事不可能吗?
感谢您的帮助! :)
ORA-00600 是 Oracle 的 "unhandled side effects" 代码,即错误。警报日志中应该有一些额外的信息。标准的 ORA-00600 建议是联系 Oracle 支持。
如果您没有支持合同,您的选择将受到限制。 ORA-00600 消息应在方括号中包含一个或多个参数,如下所示
ORA-00600: internal error code, arguments: [17069], [55573516], [], [], [], [], [], []
这些参数对于识别具体原因很有用(第一个数字通常表示 Oracle 错误号,记录或其他)。您可以尝试使用谷歌搜索它们。
至于你的具体情况,恐怕我们只能推测。对象方法 JSON.TO_CHAR()
调用一个 PL/SQL 包函数,JSON_PRINTER
。这可能是问题所在。表单 PL/SQL 与数据库 PL/SQL 共享语法,但它们是不同的引擎;您可能遇到了 Forms PL/SQL 如何与具有依赖关系的 SQL 类型一起工作的错误。