Função VALUEINLARGE do ER
A função VALUEINLARGE
determina se a entrada especificada do tipo Int64 ou Inteiro corresponde a qualquer valor de um item especificado na lista especificada. A função retorna um valor Booliano de TRUE se a entrada especificada corresponder ao resultado da execução da expressão especificada para pelo menos um registro da lista especificada. Caso contrário, ela retorna um valor Booliano de FALSE. Para compreender a diferença com a função VALUEIN
, consulte a seção Observação de uso posteriormente neste artigo.
Sintaxe
VALUEINLARGE (input, list, list item expression)
Argumentos
input
: Campo
O caminho válido de um item da fonte de dados do tipo Lista de registros. O valor desse item será correspondido.
list
: Lista de registros
O caminho válido de uma fonte de dados do tipo Lista de registros.
list item expression
: Expressão
Uma expressão condicional válida que aponta para ou contém um único campo da lista especificada que deve ser usado na correspondência.
Valores de retorno
Booliano
O valor Booliano resultante.
Notas de uso
Quando a entrada especificada representa um tipo Int64 ou Inteiro de um item da fonte de dados, a chamada para a qual é traduzível para uma instrução SQL direta, a lista especificada é convertida em uma tabela SQL temporária e a correspondência é realizada no banco de dados executando uma única consulta EXISTS JOIN
. Caso contrário, essa função funcionará como a função VALUEIN
.
Quando a entrada especificada representa um item de fonte de dados criado como um item diferente do tipo Int64 e Inteiro, ocorre um erro no tempo de design informando que a função VALUEINLARGE
não é aplicável à expressão de ER configurada.
Quando expressão da função VALUEINLARGE
é executada e mais de uma tabela temporária é usada no escopo dessa execução, ocorre um erro de tempo de execução.
Exemplo
Você define as seguintes fontes de dados no mapeamento de modelo:
- A fonte de dados In do tipo Registros de tabela.
- Essa fonte de dados se refere à tabela Intrastat.
- A opção Interempresarial é definida como Não.
- A fonte de dados InMemory do tipo Campo calculado.
- Essa fonte de dados contém a expressão
WHERE (In, In.Port <> "")
.
- Essa fonte de dados contém a expressão
- A fonte de dados InFiltered do tipo Campo calculado.
- Essa fonte de dados contém a expressão
FILTER (In, VALUEINLARGE(In.RecId, InMemory, InMemory.RecId)
.
- Essa fonte de dados contém a expressão
Quando a fonte de dados InFiltered é chamada no contexto da empresa DEMF, uma nova tabela temporária é criada no banco de dados do aplicativo, a lista de códigos de identificação de registros coletada na memória é inserida nesta tabela, e a instrução SQL a seguir é gerada para retornar os registros filtrados da Intrastat.
SELECT … from Intrastat T1
WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID IN (N'DEMF'))) AND
EXISTS (SELECT 'x' FROM tempdb."DBO".? T2 WHERE ((T2.PARTITION=?) AND (T1.RecId=T2.RecId)))