Я действительно новичок в кодировании (несколько дней). Я хотел бы попросить вас помочь с моей проблемой / идеей.
У меня есть сценарий .SQL для повторной постановки в очередь сообщений с истекшим сроком действия.
DECLARE
v_en_options DBMS_AQ.ENQUEUE_OPTIONS_T;
v_en_message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_en_message_handle RAW (16);
v_dq_options DBMS_AQ.DEQUEUE_OPTIONS_T;
v_dq_message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_dq_message_handle RAW (16);
v_neeeding MESSAGE;
CURSOR x
IS
SELECT MSG_ID, corr_id
FROM test.AQ$TEST_T
WHERE msg_state = 'EXPIRED';
BEGIN
FOR MESSAGE IN x
LOOP
v_dq_options.msgid := MESSAGE.msg_id;
DBMS_AQ.dequeue (queue_name => 'test.AQ$_test_T_E',
dequeue_options => v_dq_options,
message_properties => v_dq_message_properties,
payload => v_needing,
msgid => v_dq_message_handle);
v_en_message_properties.correlation := MESSAGE.corr_id;
DBMS_AQ.enqueue (queue_name => 'test.test_Q',
enqueue_options => v_en_options,
message_properties => v_en_message_properties,
payload => v_needing,
msgid => v_en_message_handle);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
RAISE;
END;
Он работает так, как я хочу (надеюсь на это :)), но моя идея состоит в том, чтобы поместить еще один блок кода, который мог бы делать это для всех ОЧЕРЕДЕЙ - он начинался бы с задания несколько раз в день. Нужна помощь, как вставить переменную в имя_очереди и выбрать (имя таблицы). Например, другое имя_очереди — это test1, test2, test3 и соответствующие таблицы.
Я не хочу делать несколько сценариев, которые будут запускаться отдельно, я предпочитаю делать это с помощью некоторого стиля выбора/конфигурации, где я могу объявить очередь. В моем проекте она будет расти очень быстро. Я действительно ищу ваш ответ и надеюсь понять немного больше кодирования.
Хорошего дня !!!