Как создать курсор вокруг моего оператора, который также считает количество строк? - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в SQL (Oracle) и пытаюсь создать процедуру, и у меня есть этот запрос, который мне был отправлен, но мне нужен курсор для оператора SELECT (я уверен, что есть более эффективные способычтобы сделать это, но он настаивал на курсоре) и для использования в операторе IF используйте cursorname% ROWCOUNT> 0, чтобы принять решение об удалении.

Если бы кто-то мог сказать мне, правильно ли я настроил эту процедуру, я был бы очень признателен, или даже направил бы меня куда-нибудь, чтобы получить более подробную помощь. Я прочитал несколько ссылок на курсоры и тому подобное и до сих пор испытываю некоторые проблемы. Спасибо за любую помощь, которую вы можете оказать.

CREATE PROCEDURE DELETE_TERM (v_selection in varchar2, v_creator_id in 
varchar2, v_user_id in varchar2)
IS

rec_del_count            NUMBER(9) := 0;
v_countnotok             NUMBER(9) := 0;

BEGIN
DECLARE 
CURSOR term_rmve_cur IS

IF (SELECT COUNT (*)
        FROM GENERAL.GROUP
        APPLICATION_GROUP    = 'TERMINATED'
        AND GROUP_SELECTION  = v_selection
        AND GROUP_CREATOR_ID = creator_id
        AND GROUP_USER_ID    = user_id) > 0 
        BEGIN 
            DELETE
                FROM GENERAL.GROUP
                APPLICATION_GROUP    = 'TERMINATED'
                AND GROUP_SELECTION  = v_selection
                AND GROUP_CREATOR_ID = creator_id
                AND GROUP_USER_ID    = user_id;

                -- rec_del   := rec_del_count + 1;
                EXCEPTION
                       WHEN OTHERS THEN
                            v_countnotok := v_countnotok +1;
                            DBMS_OUTPUT.PUT_LINE('ERROR DELETING' ||v_selection|| ' FROM GENERAL 
   NEW HIRES. ' );

        END;
        COMMIT;
...