You should use 'FOR ... IN ... LOOP' statement (Cursors in documentation, see 40.7.4.)
CREATE OR REPLACE FUNCTION updateSalary() RETURNS VOID AS
$BODY$
DECLARE
total INTEGER := 0;
dep CURSOR FOR SELECT Dno FROM Department;
dep_row Department%ROWTYPE;
emp CURSOR(dept_Dno INTEGER) FOR
SELECT Dno, Salary FROM Employee WHERE Dno = dept_Dno;
emp_row Employee%ROWTYPE;
BEGIN
FOR dep_row IN dep
LOOP
FOR emp_row IN emp( dep_row.Dno )
LOOP
total := total + emp_row.salary;
END LOOP;
UPDATE department SET total_sal = total WHERE department.dno = dep_row.dno;
total := 0;
END LOOP;
END;
$BODY$ LANGUAGE plpgsql;
(sum is a name of aggregate function; better not to use as variable name)