没有在PL / SQL中传递OUT参数

时间:2018-03-15 20:30:18

标签: oracle plsql

所以我有这个有趣的情况。我有一个PL / SQL过程,我传递两个IN参数和两个OUT参数:

PROCEDURE p_merge_catalog(p_merge_from_code VARCHAR2,
                          p_merge_to_code   VARCHAR2,
                          msg_type_out      OUT VARCHAR2,
                          msg_out           OUT VARCHAR2)
IS
.
.

我的难题是我正在使用作业提交/调度程序来调用似乎不处理OUT变量的过程。我无法将变量绑定到OUT参数;它只传递价值。有没有办法在不指定OUT参数的情况下调用此过程?或者也许欺骗它并使用某种隐藏变量?

1 个答案:

答案 0 :(得分:1)

两个outs不是很漂亮,但是工作;)

CREATE OR REPLACE FUNCTION f_merge_catalog_wrapper (
    p_merge_from_code    VARCHAR2,
    p_merge_to_code      VARCHAR2)
    RETURN emp%ROWTYPE
IS
    msg_type_out   VARCHAR2(2000);
    msg_out   VARCHAR2(2000);
BEGIN
   p_merge_catalog_wrapper(p_merge_from_code, p_merge_to_code, msg_type_out, msg_out);

   return msg_type_out || '@' || msg_out;
END;

没有检查拼写错误。但机制应该清楚:o)。

如果您不需要输出:

CREATE OR REPLACE PROCEDURE p_merge_catalog_wrapper (
    p_merge_from_code    VARCHAR2,
    p_merge_to_code      VARCHAR2)
    RETURN emp%ROWTYPE
IS
    msg_type_out   VARCHAR2(2000);
    msg_out   VARCHAR2(2000);
BEGIN
   p_merge_catalog_wrapper(p_merge_from_code, p_merge_to_code, msg_type_out, msg_out);
END;