ho preparato alcuni fiddle:Oracle 11gR2: Posso utilizzare DBMS_PARALLEL_EXECUTE per eseguire il mio codice PL/SQL personalizzato?
CREATE TABLE t_process
("process_number" int, "process_status" varchar2(12))
;
INSERT ALL
INTO t_process ("process_number", "process_status")
VALUES (1, 'PROCESSING')
INTO t_process ("process_number", "process_status")
VALUES (2, 'PROCESSING')
INTO t_process ("process_number", "process_status")
VALUES (3, 'TO_BE_KILLED')
INTO t_process ("process_number", "process_status")
VALUES (4, 'PROCESSING')
INTO t_process ("process_number", "process_status")
VALUES (5, 'PROCESSING')
INTO t_process ("process_number", "process_status")
VALUES (6, 'TO_BE_KILLED')
INTO t_process ("process_number", "process_status")
VALUES (7, 'TO_BE_KILLED')
INTO t_process ("process_number", "process_status")
VALUES (8, 'WAITING')
INTO t_process ("process_number", "process_status")
VALUES (9, 'KILLED')
SELECT * FROM dual
;
Questo è il mio regime di perfezionamento:
CREATE OR REPLACE PROCEDURE MY_PROCEDURE(IN_ID IN NUMBER) IS
BEGIN
UPDATE T_PROCESS SET process_status = 'KILLING' WHERE process_number = IN_ID;
COMMIT;
-- DO SOME STUFF
UPDATE T_PROCESS SET process_status = 'KILLED' WHERE process_number = IN_ID;
COMMIT;
END MY_PROCEDURE;
Ora voglio usare DBMS_PARALLEL_EXECUTE
per eseguire questa usanza SQL
:
DECLARE
id1 number = :id1;
id2 number = :id2;
BEGIN
MY_PROCEDURE(id1);
END;
Quindi, la mia domanda è:
Posso utilizzare DBMS_PARALLEL_EXECUTE
per eseguire la dichiarazione SQL sopra?
perché ho trovato solo UPDATE
esempi. Forse CREATE_CHUNKS_BY_SQL
per selezionare solo TO_BE_KILLED
e poi RUN_TASK
con dichiarazione di cui sopra?
Un altro punto, uno non ha bisogno di impegnarsi all'interno della propria procedura personalizzata come DBMS_PARALLEL_EXECUTE.run_task lo farà automaticamente !! – pahariayogi