Я новичок в 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;