Ir para o conteúdo

Função de Tempo de Execução mvSQL - ENUM()

Resumo

A Função Enum no Vinyl substitui a Chave Primária pela expressão Enum. A função Enum só pode ser usada para pesquisar valores em tabelas que tenham uma única chave primária definida (não mais de uma PK) e que tenham uma de suas colunas marcada como o tipo de uso Enum.

Um ENUM é um objeto string com um valor escolhido em uma lista de valores permitidos que são enumerados explicitamente na especificação da coluna no momento da criação da tabela. A função Enum no Vinyl pode ser usada para manter as regras criadas na camada de lógica de negócios legíveis por humanos. Usar Enum no Vinyl é útil ao construir qualquer aplicativo no qual várias pessoas trabalharão, para ajudar a simplificar a compreensão das regras.

Quando a Função Enum é usada no mvSQL em uma cláusula Where ou em uma instrução IIF, o painel SQL resultante na tela Business SQL para a Regra exibirá o UUID do valor da Chave Primária (da tabela onde reside a coluna Enum). Isto pode ser útil ao confirmar que a Regra está substituindo os dados corretos.

Nota

A função Enum não pode ser usada em regras de migração.

Você deve preencher os dados da coluna Enum para que a função funcione corretamente (na camada de lógica de negócios ou na camada de UI do aplicativo).

Sintaxe

enum(<LookupTableName>,'<EnumValue>')

Exemplo de Enum sendo usado em uma cláusula Where com vários valores:

TableID IN (Enum(LookupTableName, 'EnumValue'), Enum(LookupTableName, 'EnumValue'), Enum(LookupTableName, 'EnumValue'), ...)

Parâmetros

Nome da Tabela de Pesquisa

O nome da tabela na qual procuraremos o valor enumerado.

EnumValue

O valor na coluna de tipo enumerado. Isso deve ser uma string.

Devoluções

A chave primária é substituída pelo valor enum pesquisado na tabela de pesquisa em tempo de execução. O tipo pelo qual ele é substituído depende do tipo de chave primária da tabela de pesquisa que está sendo examinada.

Observações

A função enum é normalmente usada na cláusula where, mas pode ser usada em outras partes da instrução mvSQL.

Exemplos

Exemplo 1

Neste exemplo, Enum é usado na tabela Status e, em seguida, adicionado a uma regra de lógica de negócios existente (o objeto Status (Origem)) e, em seguida, exposto à interface do usuário do aplicativo no painel de múltiplas linhas de status.

  1. Adicione a coluna Enum à tabela Status, defina o Tipo de Dados Lógicos como String e o Uso como Enum

    Enumtabledefinition

  2. Clique no botão Resultados da tabela Status e especifique os valores para a coluna Enum

  3. Você pode criar uma nova regra para aproveitar o valor Enum ou modificar uma existente. Neste exemplo, adicionaremos a coluna Enum à regra Status (Fonte) existente

    Enumbusinesslogic

  4. Com a coluna Enum adicionada a uma regra, podemos adicioná-la à camada de UI do aplicativo para expô-la lá. Aqui nós o adicionamos como um controle ao painel de múltiplas linhas de status:

    Enumapp

Exemplo #2

Neste exemplo, Enum é usado na tabela EmployeeType e depois adicionado a uma nova regra usando a função Enum em uma cláusula Where (no mvSQL).

  1. Adicione a coluna Enum à tabela EmployeeType, defina o tipo de dados lógicos como String e o uso como Enum

    Janela 2018 10 10 10 28 32

  2. Clique no botão Resultados da tabela EmployeeType e especifique os valores para a coluna Enum. Alternativamente, você pode configurar uma página de configuração no aplicativo onde os usuários podem especificar esses valores ou expor a coluna como um controle para a interface do usuário do aplicativo e inserir os dados lá.

    Janela 2018 10 10 10 25 17

  3. Você pode usar a função Enum em uma regra existente, mas neste exemplo criaremos uma nova regra direcionada à tabela Employee

    Janela 2018 10 10 13 48 23

  4. Na Regra, adicionaremos a função Enum a uma cláusula Where no mvSQL

    Janela 2018 10 10 10 25 49

Exemplo #3

Enum(EmployeeTypeLookup, 'Fulltime')

retorna a chave primária do EmployeeTypeLookupTable. Ex:

'17457c85-b0c9-4d45-8681-5ee566429ddd'

Usado em uma instrução mvSQL, a instrução típica onde isso seria usado é:

select * from Employee where EmployeeTypeId = enum(EmployeeTypeLookup,'Fulltime')

em vez de:

select * from Employee where EmployeeTypeId = '17457c85-b0c9-4d45-8681-5ee566429ddd'