Poté, co jste se dozvěděli, jak můžete vytvářet, aktualizovat a odstraňovat data, je tu nový příspěvek do seriálu ORDA. V tomto příspěvku se dozvíte, jak se můžete dotazovat na datové úložiště v objektově orientovaném režimu. Díky ORDA jsou dotazy lehčí, čitelnější a můžete procházet celým datovým modelem pomocí objektově orientovaných konceptů !
Kromě toho umožňuje ORDA velmi snadno dotazovat několik souvisejících tabulek, spravovat rekurzivní vztahy k téže tabulce a používat několik logických operátorů v jednom dotazu. Navíc se nemusíte starat o nastavování vztahů mezi tabulkami … ručně ani automaticky !
ZAČNĚTE S DOTAZOVÁNÍM V SYSTÉMU ORDA
Stejně jako když byste prováděli dotaz na tabulku, dotazování pomocí ORDA se provádí na datovou třídu (která odpovídá tabulce).
Existuje několik způsobů, jak se dotazovat na datovou třídu. Následující příklady poskytují stručný přehled. Podrobnější informace o query() se podívejte do dokumentace.
1- Zadejte dotaz jako jeden řetězec.
Zde je dotaz pro získání všech zaměstnanců, jejichž křestní jméno začíná na „S“:
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName='S@'" // Query on Employee table
2- Zadejte dotaz a hodnoty zvlášť pomocí zástupných znaků
Nyní řekněme, že chcete získat všechny zaměstnance, jejichž křestní jméno začíná na „D“ nebo „E“. Všimněte si, že hodnoty, které se mají použít, jsou v dotazu odsazeny a jsou označeny pomocí :1, :2, … :n, jak je uvedeno níže:
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName=:1 nebo firstName=:2"; "D@"; "E@" // Query on Employee table
Varianta: Pro zadání hodnot můžete také použít zástupné znaky prostřednictvím kolekce. Jak ukazuje následující příklad:
C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .
parameters:=New collection("D@"; "E@")
$employees :=ds.Employee.query("firstName=:1 or firstName=:2";$params) // Query on Employee table
Některé výhody nového způsobu dotazování
SNADNÉ POUŽITÍ REKURZIVNÍHO ODKAZU NA JEDNU TABULKU
Uvažujme tento rekurzivní odkaz na tabulku „Zaměstnanec“:
Při použití klasického způsobu
Tento kód požaduje všechny zaměstnance, jejichž křestní jméno začíná písmenem „A“, přičemž manažer má příjmení začínající písmenem „S“:
ARRAY LONGINT(_managersIDs;0)
;
QUERY ([Employee];[Employee]firstName;"="; "A@")
CREATE SET ([Employee]; "a")
QUERY ([Employee];[Employee]lastName;"=""S@")
SELECTION TO ARRAY ([Employee]ID;_managersIDs)
QUERY WITH ARRAY ([Employee]managerID;_managersIDs)
CREATE SET ([Employee]; "s")
INTERSECTION ("a"; "s"; "result")
USE SET ("result")
CLEAR SET ("a")
CLEAR SET ("s"
)
pomocí orda
Tento dotaz je mnohem lehčí…
C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("firstName=:1 and manager.lastName=:2"; "A@"; "S@")
Nečekejte … začněte používat ORDA hned a získejte kratší, čistší a čitelnější kód!