如何在一个主要函数oracle pl / sql中调用许多函数?

时间:2018-06-01 11:41:37

标签: oracle plsql oracle11g

我有6个小函数,想要在一个主函数中调用所有6个函数

在Main函数中想要调用6个函数:

v_CASE_A := FUNCTION_1

v_CASE_B := FUNCTION_2

等等。

示例这是一个小函数_1:

CREATE OR REPLACE FUNCTION u_t (v_number IN NUMBER)
    RETURN VARCHAR2
IS
    v_length   NUMBER;
    result     VARCHAR2 (100);
    v_figure   VARCHAR2 (100);
BEGIN
    v_length := LENGTH (v_number);
    v_figure := TO_CHAR (TO_DATE (v_number, 'J'), 'JSP');

    IF v_length IN (1, 2)
    THEN
        --**result := i want to call v_case_a in this variable from main function;**
    END IF;

    RETURN RESULT;
END;

示例这是主要功能:

CREATE OR REPLACE FUNCTION number_to_words (v_number IN NUMBER)
    RETURN VARCHAR2
IS
    v_result   VARCHAR2 (500);
    v_figure   VARCHAR2 (100);
    v_case_A   VARCHAR2 (100);
BEGIN
    v_result := v_case_A;
    v_figure := TO_CHAR (TO_DATE (v_number, 'J'), 'JSP');

    --**v_case_A := i want to call function_1 in this variable;**

    RETURN v_result;
END;

如何在一个主函数PL / SQL中调用多个函数?

1 个答案:

答案 0 :(得分:0)

我不确定你想做什么,但听起来像这样:

CREATE OR REPLACE FUNCTION number_to_words (v_number IN NUMBER)
    RETURN VARCHAR2
IS
    v_result   VARCHAR2 (500);
BEGIN
    -- classical if-block
    IF v_number = 1
    THEN
        v_result := function1 ();
    ELSIF v_number = 2
    THEN
        v_result := function2 ();
    ELSE
        v_result := functionDefaultBehaviour ();
    END IF;

    -- case-block
    CASE v_number
    WHEN 1 THEN
        v_result := function1 ();
    WHEN 2 THEN
        v_result := function2 ();
    ELSE
        v_result := functionDefaultBehaviour ();
    END CASE;

    RETURN v_result;
END;

v_result设置为function1function2functionDefaultBehaviour的返回值,具体取决于参数v_number

运行两次 - 使用if-else-block,第二次使用更多美化case语句。