Как создать VIEW в боковом процессе - PullRequest
0 голосов
/ 18 октября 2019

При создании представления внутри процедуры из-за ошибки с кодом ниже. Но мне нужно создать это представление динамически. Когда я пытаюсь запустить тот же сценарий с существующим представлением, он работает нормально, но мне нужно динамически создать представление перед инициализацией курсора.

CREATE OR REPLACE PROCEDURE proc_dashboard_tiles (out_dashboard_tab OUT return_dashboard_arr,
                                                   start_date IN DATE,
                                                   end_date IN DATE
) IS


    lrec                   return_dashboard_report;
    l_num_counter          NUMBER := 0;
--     CREATE OR REPLACE VIEW x AS (
--     EXECUTE IMMEDIATE
--    'SELECT
--        COUNT(*) count,
--        CONCAT('Tier ',customer_tier) value,
--         'customer_tier' viewType
--    FROM
--        bi_request
--    WHERE
--        customer_tier is not null
--        AND START_DATE BETWEEN start_date and end_date
--    GROUP BY
--        customer_tier'
--        );
    CURSOR cur_dashboard_data IS
    SELECT
        count,
        value,
        viewType
    FROM
        v_customer_tier
        ;

    TYPE rec_dashboard_data IS
        TABLE OF cur_dashboard_data%rowtype INDEX BY PLS_INTEGER;
    l_cur_dashboard_data   rec_dashboard_data;
BEGIN
--    My code EXCEPTION
                        dbms_output.put_line('My code');

END;````

while creating a view inside the procedure through error.
when I try to run the same script with existing view it's working fine but I need to create view dynamically before the cursor initialization

1 Ответ

0 голосов
/ 18 октября 2019

Ваш код должен выглядеть следующим образом:

Declare
rec_dashboard_data sys_refcursor;
-- other variable declaration
Begin
Execute immediate q'#<your create view sql>#';
Open rec_dashboard_data for 'SELECT
        count,
        value,
        viewType
    FROM
        v_customer_tier';
-- other task
--Exception block
End;
/

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...