Declare a cursor that contains a table that does not have fields, where data. * is a table, and then add the fields in other tables to the sal_data cursor www.2cto.com SQL code cursor sal_data (cp_center_temp_id varchar2) is select data. *, post. id emp_post_id, doc. salary_Tax_Bd sa_tax_bd, batch. bill_year_month, batch. id batch_id, post. emp_id employee_id from sa_salary_data data left join sa_salary_batch batch on data. sa_batch_id = batch. id left join sa_salary_document doc on data. sa_doc_id = doc. id left join pb_emp_post post on doc. emp_post_id = post. id left join pb_send send on post. send_id = send. id where send. cost_center_id = cp_center_temp_id; use this cursor: declare a variable of this cursor type: SQL code salary_data_temp sal_data % rowtype; www.2cto.com then compile this cursor SQL code open sal_data (center_temp.id ); loop fetch sal_data into salary_data_temp; exit when sal_data % notfound; -- TODO end loop; colse sal_data;