Resolução de referências variáveis globais
A resolução de referência de variáveis globais depende de se um nome de variável global é qualificado e onde a variável global é referenciada.
A ordem de resolução de uma referência de variável global em relação aos nomes para uma coluna, variável SQL, parâmetro SQL ou campo variável de linha é descrita em Referências a parâmetros SQL, variáveis SQL e variáveis globais.
A qualificação implícita de um nome de variável global não qualificado que é usado como principal objeto de uma instrução CREATE, ALTER, COMMENT, DROP, GRANT ou REVOKE é descrita em Tipo de usuário não qualificado definido, função, procedimento, nomes específicos, variáveis globais e módulo.
Uma melhor prática é qualificar completamente o nome da variável global ao referenciar a variável global em uma instrução SQL. Isso evita que uma mudança subsequente no caminho SQL tenha um impacto na resolução da variável global.
A resolução de uma referência de variável global pelo gerenciador de banco de dados em todos os demais contextos depende de se o nome de variável global é qualificado.
Nomes qualificados
Para resolver o nome de uma variável global qualificada, a referência é avaliada de acordo com o seguinte processo:
- Se a referência de variável global for feita a partir de dentro de um módulo e o qualificador corresponder ao nome do módulo, o módulo será procurado por uma variável global do módulo correspondente. As regras a seguir são aplicadas:
- Se o qualificador for um identificador único, o nome do esquema do módulo será ignorado quando o qualificador for comparado com o nome do módulo.
- Se o qualificador for um identificador de duas partes, ele é comparado com o nome do módulo qualificado do schema.
- O qualificador é agora considerado como um nome de esquema. Aquele esquema especificado é procurado por uma variável global de esquema correspondente.
- Se um nome de variável global de esquema corresponde ao nome de variável global não qualificado na referência, a resolução é completa.
- Se o esquema não existir, então um erro será retornado.
- Se não houver variáveis globais de esquema correspondente no esquema, e o qualificador correspondesse ao nome do módulo na primeira etapa, então um erro será retornado.
- Caso contrário, a resolução continua com o próximo passo.
- O qualificador é agora considerado como um nome de módulo. As regras a seguir são aplicadas:
- Se o nome do módulo for qualificado com um nome de esquema, o módulo será procurado por uma variável global de módulo publicada correspondente.
- Se o nome do módulo não for qualificado com um nome de esquema, o esquema para o módulo é o primeiro esquema no caminho SQL que possui um nome de módulo correspondente. Se o nome de um módulo corresponde ao nome do esquema que é encontrado no caminho SQL, esse módulo será procurado por uma variável global de módulo publicada correspondente.
- Se o módulo não for encontrado através do caminho SQL, considera-se a existência de um alias de módulo público que corresponda ao nome do qualificador variável global. Se um alias do módulo público for encontrado, o módulo que está associado ao alias do módulo public é procurado por uma variável global de módulo publicada correspondente.
Nomes não qualificados
Para resolver o nome de uma variável global não qualificada, a referência é avaliada de acordo com o seguinte processo:
- Se uma referência de variável global não qualificada for feita a partir de dentro de um módulo, o módulo será procurado por uma variável global de módulo correspondente. Se um nome de variável global do módulo corresponde ao nome da variável global na referência, a resolução é completa. Se não houver uma variável global do módulo correspondente, a resolução continua com o próximo passo.
- Os esquemas no caminho SQL são pesquisados em ordem da esquerda para a direita para uma variável global de esquema correspondente. Se um nome de variável global de esquema corresponde ao nome da variável global na referência, a resolução é completa. Se nenhuma variável global correspondente for encontrada após concluir esta etapa, um erro será retornado.