난 c_value
및 c_suit
열을 사용하여 cards
테이블에서 임의로 카드를 선택하려고합니다. 그것을 선택한 후에, 절차는 해당 엔트리의 taken
필드를 'Y'로 업데이트해야합니다.ORA-02014- 테이블에서 무작위로 선택된 행을 어떻게 갱신합니까?
create or replace procedure j_prc_sel_card(p_value OUT number,
p_suit OUT number)
AS
CURSOR CUR_GET_RAND_CARD IS SELECT c_value,
c_suit
FROM (SELECT c_value,
c_suit,
taken
FROM jackson_card
ORDER BY dbms_random.value)
WHERE rownum = 1
FOR UPDATE OF taken;
BEGIN
OPEN CUR_GET_RAND_CARD;
FETCH CUR_GET_RAND_CARD into p_value, p_suit;
UPDATE jackson_card
SET taken = 'Y'
WHERE c_value = p_value
AND c_suit = p_suit;
CLOSE CUR_GET_RAND_CARD;
END;
그런 다음 선택한 카드를 가져 와서 처음부터 출력하려고합니다. 이것으로 :
SET serveroutput on;
DECLARE v_value number;
v_suit number;
BEGIN
j_prc_sel_card(p_value => v_value,p_suit => v_suit);
DBMS_OUTPUT.PUT_LINE(v_value);
DBMS_OUTPUT.PUT_LINE(v_suit);
END;
/
그러나 나는 제목에 언급 된 오류가 발생했습니다 임의의 카드를 선택하는 내 방식대로 업데이트를하기에서 저를 중지 것 같다. 미리 감사드립니다!