Definindo consultas complexas
As consultas complexas ajudam a restringir uma listagem detalhada que é obtida como saída de uma API. Para gerar a saída desejada, você pode passar consultas usando os operadores And ou Or no XML de entrada de uma API.
Por exemplo, você pode consultar a API getItemList com base na unidade de medida, no código do grupo de itens ou em qualquer parâmetro fornecido na definição da API, usando os operadores de consulta complexos, And ou Or.
- deletePricelistAssignmentList
- deletePricingRuleAssignmentList
- getAttributeAllowedValueList
- getClassificationPurposeList
- getCustomerContactList
- getExceptionList
- getInventoryReservationList
- getItemList
- getOrderLineList
- getOrderList
- getOrganizationList
- getSearchIndexTriggerList
- getShipmentList
- getShipmentLineList
Para obter mais informações, consulte o Javadoc. Para obter mais informações sobre as colunas válidas do banco de dados, consulte Diagramas de relacionamento de entidades (ERDs).
Exemplo: adição de consultas complexas na API getItemList
Considere o seguinte cenário para adicionar consultas complexas à API getItemList.
<Item OrganizationCode="ARGOS" ItemGroupCode="PROD" >
<PrimaryInformation KitCode="BUNDLE" KitCodeQryType="NE">
</PrimaryInformation>
<ComplexQuery Operator="AND">
<And>
<Or>
<Exp Name="ProductLine" Value="DO" QryType="EQ"/>
<Exp Name="ProductLine" Value="Expert" QryType="EQ"/>
</Or>
</And>
</ComplexQuery>
</Item>OrganizationCode e ItemGroupCode são os dois atributos do elemento <Item> e KitCode e KitCodeQryType são os atributos do elemento <PrimaryInformation> que são considerados neste exemplo. No entanto, você pode incluir qualquer um ou todos os atributos na getItemList . Todos os atributos na API
são interpretados com um And implícito juntamente com o
operador de consulta complexa.
Aplique as seguintes regras quando você incluir consultas complexas:
- Você pode definir apenas um
ComplexQueryem um único elemento. Por exemplo, você não pode ter dois operadoresComplexQueryem um elemento Item. - Não é possível incluir uma única consulta complexa em duas tabelas diferentes. Por exemplo, na API getShipmentList, você não pode usar
ChainedFromOrderHeaderKeyeShipmentLineNona mesma consulta, pois o primeiro pertence à tabelaYFS_ORDER_LINEe o segundo é um atributo da tabelaYFS_SHIPMENT_LINE. - O atributo sem valor não é considerado na consulta complexa,
como
Attribute="". - Para atributos anexados com QryType, especifique um valor de tipo de consulta a partir da tabela a seguir. Essa opção faz distinção entre maiúsculas e minúsculas.
Os valores dos atributos QryType variam de acordo com o tipo de dados do campo. A tabela a seguir lista os valores de tipo de consulta compatíveis que são usados pelas APIs de lista para cada tipo de dados.
| Campo DataType | Valores de Tipo de Consulta Suportados |
|---|---|
| Char/VarChar2 |
|
| Número |
|
| Data |
|
| Data-Hora |
|
| Nulo |
Nota: esses dois tipos de consulta são usados quando a coluna ou atributo é configurado como Nullable no XML da entidade.
|
- Só pode haver um elemento sob o
ComplexQuery, ou seja,AndouOr. - Os elementos
AndouOrpodem ter um ou muitos elementos filhos, conforme necessário. - Os elementos
AndouOrpodem ter outros elementos de expressãoAndouOrcomo elementos filhos.
Este exemplo pode ser interpretado como a expressão lógica a seguir:
( YFS_ITEM.ORGANIZATION_CODE = 'ARGOS' ) AND ( YFS_ITEM.ITEM_GROUP_CODE = 'PROD' )
AND ( YFS_ITEM.KIT_CODE <> 'BUNDLE' ) AND ( ( YFS_ITEM.PRODUCT_LINE = 'DO' )
OR ( YFS_ITEM.PRODUCT_LINE = 'Expert' ) ) Esses exemplos explicam como incluir consultas complexas para obter os resultados desejados de seu banco de dados usando as APIs mencionadas.