Funções de ER VALUEINLARGE
A função VALUEINLARGE
determina se a entrada especificada do tipo Int64 ou Número inteiro corresponde a qualquer valor de um item especificado na lista especificada. A função devolve um valor Booleano de VERDADEIRO se a entrada especificada corresponder ao resultado da execução da expressão especificada para pelo menos um registo da lista especificada. Caso contrário, devolve um valor Booleano de FALSO. Para compreender a diferença com a função VALUEIN
, consulte a secção Notas de utilização mais adiante neste tópico.
Sintaxe
VALUEINLARGE (input, list, list item expression)
Argumentos
input
: Campo
O caminho válido de um item de origem de dados do tipo Lista de registos. O valor deste item será correspondido.
list
: Lista de registos
O caminho válido de uma origem de dados do tipo de dados Lista de registos.
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 utilizada para a correspondência.
Valores de retorno
Booleano
O valor Booleano resultante.
Notas de utilização
Quando a entrada especificada representa um tipo Int64 ou Número inteiro de um item de origem de dados, a chamada para a qual é traduzível para uma instrução SQL direta, a lista especificada é convertida para uma tabela SQL temporária e a correspondência é efetuada na base de dados executando uma única consulta EXISTS JOIN
. Caso contrário, esta função funciona como a função VALUEIN
.
Quando a entrada especificada representa um item de origem de dados estruturado como um item diferente do tipo Int64 e Número inteiro, ocorre um erro durante a estruturação informando-o de que a função VALUEINLARGE
não é aplicável para a expressão de ER configurada.
Quando a expressão da função VALUEINLARGE
é executada e mais de uma tabela temporária é utilizada no âmbito desta execução, ocorre um erro de execução.
Exemplo
Defina as seguintes origens de dados no mapeamento de modelos:
- A origem de dados In do tipo Registos de tabelas.
- Esta origem de dados refere-se à tabela Intrastat.
- A opção Transversal à empresa está definida para Não.
- A origem de dados InMemory do tipo Campo calculado.
- Esta origem de dados contém a expressão
WHERE (In, In.Port <> "")
.
- Esta origem de dados contém a expressão
- A origem de dados InFiltered do tipo Campo calculado.
- Esta origem de dados contém a expressão
FILTER (In, VALUEINLARGE(In.RecId, InMemory, InMemory.RecId)
.
- Esta origem de dados contém a expressão
Quando a origem de dados InFiltered é chamada no contexto da empresa DEMF, uma nova tabela temporária é criada na base de dados de aplicação, a lista de memória de códigos de identificação de registo são inseridas nesta tabela e a seguinte instrução SQL é gerada para devolver registos filtrados da tabela 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)))