cards
列のあるテーブルからランダムにカードを選択し、手順c_value
を使用しようとしています。それを選択した後、プロシージャはそのエントリのフィールドを「Y」にc_suit
更新する必要があります。taken
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;
/
しかし、タイトルにエラーが記載されていて、ランダムなカードを選択する方法が更新を妨げているようです。前もって感謝します!