You're chosing to handle all exceptions, no matter what they are.

Would this work for you:
Code:
select Nvl(sum(seats_held),0) ...
That will always return a row, even if there are no rows that match the query ...
Code:
SQL> create table x (col1 number);

Table created.

SQL> select sum(col1) from x;

 SUM(COL1)
----------


SQL> select Nvl(sum(col1),0) from x;

NVL(SUM(COL1),0)
----------------
               0