Ok, publicaré esto como respuesta porque los comentarios no permitirán tanto texto.
Al ver sus tablas, algunas cosas aún no están claras. tu función ADD_PACIENTE_QUARTO implementa un SELECT instrucción que establece el predicado Where PAC = CONT pero PAC no está en PACIENTE es la especificación sino que es la variable local donde almacena su resultado y CONT es su parámetro, no está claro qué intentó allí.
Ahora su activador tiene algunas fallas en la lógica y la implementación.
En primer lugar, el nombre de su disparador es PACIENTE_TRIGGER pero la línea INSERT OR UPDATE ON TIPO_QUARTO me dice que está en el TIPO_QUARTO table, esto no es un problema sintácticamente, pero lógicamente puede ser un dolor de cabeza para alguien que está tratando de averiguar a qué tabla pertenece el disparador.
A continuación, use INSERT OR UPDATE OF TIPO ON TIPO_QUARTO para monitorear inserciones o actualizar cambios solo en la columna TIPO de TIPO_QUARTO mesa.
Ahora esta línea If :new.TIPO_QUARTO = 'UTI' then , asumiendo que este disparador está adjunto a TIPO_QUARTO tabla, esa tabla no tiene una columna llamada TIPO_QUARTO cambia esto a :new.TIPO .
A continuación, PAC es de tipo VARCHAR así que no me queda claro qué intentas hacer en PAC := PAC - :new.TIPO; y en PAC := PAC + :new.TIPO; ambas líneas arrojarán invalid number excepción ya que no puede sumar o restar cadenas, tal vez su intención era concatenar u obtener una subcadena.
Y por último la llamada a UPDATE TIPO_QUARTO SET TIPO = PAC dentro de un disparador para TIPO_QUARTO resultará en mutating table excepción, no puede consultar/actualizar una tabla que está en medio de una declaración DML (INSERTAR o ACTUALIZAR en este caso) para arreglar esto, simplemente puede asignar :new.TIPO := PAC .
Ocúpate de estos detalles y tal vez así tu problema no vuelva a existir.