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:

  1. 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.
    Se o nome de uma variável global de módulo corresponde ao nome de variável global não qualificado na referência, a resolução é completa. Se o qualificador não corresponder ao nome do módulo ou não houver uma variável global do módulo correspondente, a resolução continua com o próximo passo.
  2. 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.
  3. 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.
    Se o nome de uma variável global de módulo publicado corresponder ao nome de variável global não qualificado na referência de variável global, a resolução será completa. Se um módulo correspondente não for encontrado ou não houver uma variável global do módulo correspondente no módulo correspondente, um erro será retornado.

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:

  1. 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.
  2. 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.