The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT api_person_id
FROM IGS_PE_ALT_PERS_ID
WHERE person_id_type = p_person_id_type AND
pe_person_id = p_person_id;
SELECT term_location_country, term_location_postcode
FROM IGS_PE_STATISTICS
WHERE person_id = p_person_id AND
start_dt = p_start_dt;
SELECT home_location_country, home_location_postcode
FROM IGS_PE_STATISTICS
WHERE person_id = p_person_id AND
start_dt = p_start_dt;
v_insert_not_req_flag BOOLEAN DEFAULT FALSE;
SELECT sequence_number
FROM IGS_PE_STD_TODO
WHERE person_id = cp_person_id AND
s_student_todo_type = cp_s_student_todo_type AND
logical_delete_dt IS NULL;
CURSOR c_get_todo_rec_for_update (
cp_person_id IGS_PE_STD_TODO.person_id%TYPE,
cp_s_student_todo_type IGS_PE_STD_TODO.s_student_todo_type%TYPE,
cp_sequence_number NUMBER ) IS
SELECT IGS_PE_STD_TODO.* , ROWID
FROM IGS_PE_STD_TODO
WHERE person_id = cp_person_id AND
s_student_todo_type = cp_s_student_todo_type AND
sequence_number = cp_sequence_number
FOR UPDATE OF todo_dt
NOWAIT;
v_existing_st_record C_GET_TODO_REC_FOR_UPDATE%ROWTYPE;
--- Check for previous insertion during transaction as multiple records
--- for a given person/todo_type aren't necessary. If one is found and it
--- isn't logically deleted, then update the todo_dt to postpone processing
--- (10 minutes is added).
OPEN c_chk_todo_dt_exists(p_person_id, p_s_student_todo_type);
-- The following block selects the record for updating. If a lock is present,
-- then the record isn't updated and processing continues.
BEGIN
OPEN c_get_todo_rec_for_update( p_person_id,
p_s_student_todo_type,
v_st_sequence_number );
FETCH c_get_todo_rec_for_update INTO v_existing_st_record;
EXIT WHEN c_get_todo_rec_for_update%NOTFOUND;
v_insert_not_req_flag := TRUE;
SELECT IGS_PE_STD_TODO_SEQ_NUM_S.NEXTVAL INTO L_VAL
FROM DUAL ;
IGS_PE_STD_TODO_PKG.UPDATE_ROW(
x_rowid => v_existing_st_record.ROWID ,
X_PERSON_ID => v_existing_st_record.PERSON_ID,
X_S_STUDENT_TODO_TYPE => v_existing_st_record.S_STUDENT_TODO_TYPE,
X_SEQUENCE_NUMBER => L_VAL,
X_TODO_DT => SYSDATE + 1/144 ,
X_LOGICAL_DELETE_DT => v_existing_st_record.LOGICAL_DELETE_DT,
X_MODE=> 'R'
);
FETCH c_get_todo_rec_for_update INTO v_existing_st_record;
CLOSE c_get_todo_rec_for_update;
--- If an update was performed or a previous record exists then exit
-- the procedure.
IF v_insert_not_req_flag THEN
RETURN;
--- Insert a record into the IGS_PE_STD_TODO table using the parameters.
SELECT IGS_PE_STD_TODO_SEQ_NUM_S.nextval INTO L_VAL
FROM DUAL ;
IGS_PE_STD_TODO_PKG.INSERT_ROW (
X_ROWID => L_ROWID,
x_person_id =>p_person_id,
x_s_student_todo_type =>p_s_student_todo_type,
x_sequence_number => L_VAL ,
x_todo_dt => p_todo_dt,
x_logical_delete_dt => NULL,
x_mode => 'R'
);
p_inserting IN BOOLEAN ,
p_updating IN BOOLEAN ,
p_deleting IN BOOLEAN ,
p_message_name IN OUT NOCOPY VARCHAR2 )
RETURN BOOLEAN AS
v_index BINARY_INTEGER;
SELECT * FROM IGS_PE_PERSON
WHERE rowid = lcrowid;
-- Insert person into IGS_PE_STD_TODO table
IGS_GE_PRC_TRANSFER.genp_ins_trnsfr_todo(r_pe.person_id,
'PERS_TRANS',
v_todo_dt);