### 2. Generate a trigger displaying driver information, on participating in an accident ```SQL SQL> create or replace trigger driver_info after insert on participated for each row declare id varchar2(4); nam varchar2(10); addr varchar2(30); begin select "driver_id#", name, address into id, nam, addr from person where :new."driver_id#" = person."driver_id#"; dbms_output.put_line('driver_id: ' || id || ' name: ' || nam || ' address: ' || addr); exception when no_data_found then dbms_output.put_line('no driver found for driver_id: ' || :new."driver_id#"); when others then dbms_output.put_line('an error occurred: ' || sqlerrm); end; / Trigger created. ``` ### 3. Create a function to return total number of accidents happened in a particular year. ```SQL SQL> create or replace function total_accd (year in int) return int as total int; begin select count(report_number) into total from accident where extract(year from accd_date)=year; return total; end; / Function created. SQL> select total_accd(2024) from dual; TOTAL_ACCD(2024) ---------------- 2 ``` ### 4. Create a procedure to display total damage caused due to an accident for a particular driver on a specific year. ```SQL create or replace procedure tot_damage (driver in varchar2, year in number) is damage number := 0; -- initialize damage to 0 begin select sum(damage_amount) into damage from participated pa natural join accident ac where pa."driver_id#" = driver -- use the correct column name with quotes and extract(year from ac.accd_date) = year; dbms_output.put_line('total damage: ' || nvl(damage, 0)); exception when no_data_found then dbms_output.put_line('no data found for the given driver and year.'); when others then dbms_output.put_line('an error occurred: ' || sqlerrm); end; / ``` ```sql SQL> execute tot_damage('1236',2024); Total damage: 150 PL/SQL procedure successfully completed. ```