0

测试用例如下:

CREATE OR REPLACE PROCEDURE TEST IS
BEGIN
    APEX_JSON.OPEN_OBJECT();
    APEX_JSON.CLOSE_OBJECT();
END;

我从 APEX 的 SQL 命令或 SQL 脚本运行它的 ORDS 收到 500 错误。我不确定这里是否还需要其他东西,或者建议只是不要在程序中使用 APEX_JSON。我希望有人能插话。

澄清一下:我在 Oracle Cloud ATP 实例上运行它,这似乎在本地实例中运行良好,但在这里不行。

编辑 1

我已经尝试过类似于 Ergi Nushi 的答案,但无济于事。我什至认为我的代码是错误的并尝试了他的代码,但它也没有工作(见下面的截图)

在 PROCEDURE 或 FUNCTION 中使用 APEX_JSON 时出现错误 500

编辑 2

到目前为止,为了让我的项目继续进行,我所做的是使用 12c JSON API,而不是像:

-- ...
   L_JSON := JSON_OBJECT(
       KEY 'test' VALUE L_TEST_VALUE
       NULL ON NULL
       RETURNING VARCHAR2(32767)
   );
-- ...

我知道这不是我一直在寻找的答案,但希望它可以帮助某人继续前进。

4

1 回答 1

0

首先你需要初始化你APEX_JSON的:

APEX_JSON.initialize_clob_output();

构建对象后,您应该得到输出

APEX_JSON.get_clob_output();

然后释放输出以便将其用于其他对象:

APEX_JSON.free_output();

完整代码:

CREATE OR REPLACE PROCEDURE TEST IS
    output CLOB;
BEGIN
    APEX_JSON.initialize_clob_output();
        APEX_JSON.OPEN_OBJECT();
        APEX_JSON.CLOSE_OBJECT();
    output := APEX_JSON.get_clob_output(); --> pass the output to a variable
    APEX_JSON.free_output();
END;
于 2019-12-14T22:48:22.550 回答