Ok, vou postar isso como uma resposta porque os comentários não permitirão tanto texto.
Vendo suas mesas algumas coisas ainda não estão claras. sua função
ADD_PACIENTE_QUARTO implementa um SELECT declaração que declara o predicado Where PAC = CONT mas PAC não está em PACIENTE 's, mas sim a variável local onde você armazena seu resultado e CONT é o seu parâmetro, não está claro o que você tentou lá. Agora seu gatilho tem algumas falhas na lógica e na implementação.
Em primeiro lugar, o nome do seu gatilho é
PACIENTE_TRIGGER mas a linha INSERT OR UPDATE ON TIPO_QUARTO me diz que está no TIPO_QUARTO tabela, isso não é um problema sintaticamente, mas logicamente pode ser uma dor de cabeça para alguém que está tentando descobrir a qual tabela o gatilho pertence. Em seguida, use
INSERT OR UPDATE OF TIPO ON TIPO_QUARTO para monitorar inserções ou atualizar alterações somente na coluna TIPO de TIPO_QUARTO tabela. Agora esta linha
If :new.TIPO_QUARTO = 'UTI' then , supondo que este gatilho esteja anexado a TIPO_QUARTO tabela, essa tabela não tem uma coluna chamada TIPO_QUARTO mude para :new.TIPO . Em seguida,
PAC é do tipo VARCHAR então não está claro para mim o que você está tentando fazer em PAC := PAC - :new.TIPO; e em PAC := PAC + :new.TIPO; ambas as linhas lançarão invalid number exceção, pois você não pode adicionar ou subtrair strings, talvez sua intenção fosse concatenar ou obter uma substring. E por último a chamada para
UPDATE TIPO_QUARTO SET TIPO = PAC dentro de um gatilho para TIPO_QUARTO resultará em mutating table exceção, você não pode consultar/atualizar uma tabela que está no meio de uma instrução DML (INSERT ou UPDATE neste caso) para corrigir isso, basta atribuir :new.TIPO := PAC . Cuide desses detalhes e talvez aí seu problema não seja mais.