【问题标题】:Using PL/JSON in oracle forms 11g在 oracle 表单 11g 中使用 PL/JSON
【发布时间】:2015-11-05 09:09:04
【问题描述】:

我正在尝试在 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 的一般内部错误。

我做错了什么?是不是我想做的事情是不可能的?

感谢您的帮助! :)

【问题讨论】:

  • 您最好将此类代码保留在数据库服务器上的 PL/SQL 包中,并从 Forms 中调用它们,而不是在 Oracle 表单中实现此代码。
  • 是的,按照下面 APC 的回答,这就是我所做的,并且工作正常。

标签: json plsql oracle11g oracleforms pljson


【解决方案1】:

ORA-00600 是 Oracle 针对“未处理的副作用”(即错误)的代码。警报日志中应该有一些附加信息。标准的 ORA-00600 建议是联系 Oracle 支持。

如果您没有支持合同,您的选择将受到限制。 ORA-00600 消息应该在方括号中带有一个或多个参数,像这样

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

这些参数对于识别特定原因很有用(第一个数字通常表示 Oracle 错误编号,记录在案或其他方式)。你可以试试谷歌搜索。

至于你的具体情况,恐怕我们只能推测。对象方法JSON.TO_CHAR() 调用PL/SQL 包函数JSON_PRINTER。这可能是问题所在。 Forms PL/SQL 与数据库 PL/SQL 共享语法,但它们是不同的引擎;可能是您遇到了 Forms PL/SQL 如何与具有依赖关系的 SQL 类型一起工作的错误。

【讨论】:

  • 我应该指定 ORA-00600 的所有括号都是空的。感谢您提供有关依赖项的提示。我会试着调查一下。
猜你喜欢
  • 2015-07-01
  • 2012-02-07
  • 1970-01-01
  • 2015-01-23
  • 2013-10-07
  • 2016-05-21
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多