|Description||Gets objects that match clauses.|
|Parameter 1 Name||Repository|
|Parameter 1 Type||repository|
|Parameter 2 Name||Clauses (optional, but highly recommended) //
For more information, see the section below)
|Parameter 2 Type||operators (WHERE, TOP)|
|Parameter 3 Name||-|
|Parameter 3 Type||-|
|Return value||Returns a list of objects from Repository that matches Clauses.|
SELECT returns a limited number of records - 20 000. This limit is only for the returned records count.
It's recommended to set as many filters as possible. (in the WHERE clause).
The [WHERE] clause of the SELECT statement supports the following operators:
Operators not supported by SELECT but used by the FILTER operator are:
FILTER AND WHERE filtering of a SELECT
Having this in mind, it's really important to extract lists from the database.
When using SELECT, you send a request to the database with as many [WHERE] filters as possible.
If there's an unsupported filter, then the list returned by SELECT may be filtered additionally by [FILTER].
A SELECT statement makes a direct request to the database, which may influence productivity and slow down the calculation of the attribute. When using SELECT, you have to apply as many [WHERE] filters as possible, because this would limit the amount of data extracted from the database into the client.
If SELECT doesn't provide enough filters, the result may be filtered by [FILTER], which operates on data already loaded in the client.
Let's say you need a list of documents whose DocumentTypeId is equal to 'bbd8e7ae-c0e0-4c1b-8730-7d68fa52971e' or '89ca5ca4-ad57-44c7-9b33-2ff44e054bff'. The documents are work orders.
The following calculated attribute would be incorrect and return errors when used:
10: SELECT REPO:Production.ShopFloor.WorkOrders EXP:20 20: WHERE EXP:30 30: OR EXP:40 EXP:50 40: EQUAL CONST:bbd8e7ae-c0e0-4c1b-8730-7d68fa52971e 45: ATTRIB:DocumentTypeId CONST:System.Guid 50: EQUAL EXP:45 CONST:89ca5ca4-ad57-44c7-9b33-2ff44e054bff
You can set an attribute which selects the work orders.
Then, to filter the list which the SELECT operator returned, apply the [FILTER] operator for more precision.
The correct calculated attribute is as follows:
10: FILTER EXP:20 EXP:30 20: SELECT REPO:Production.ShopFloor.WorkOrders 30: OR EXP:40 EXP:50 40: EQUAL EXP:45 CONST:bbd8e7ae-c0e0-4c1b-8730-7d68fa52971e 45: CAST ATTRIB:DocumentTypeId CONST:System.Guid 50: EQUAL ATTRIB:DocumentTypeId CONST:89ca5ca4-ad57-44c7-9b33-2ff44e054bff