Ana içeriğe geç

Sorgu

Depoda bir XQuery çalıştırır ve sonuçları dize dizisi olarak döndürür.

1
$XmlRepository.Query(xquery: string, parameters?: object, collection?: string):Array<string>

Parametreler

string xquery
    Veritabanında çalıştırılacak XQuery ifadesi.

object parameters optional
    XQuery ifadesine bağlanacak parametreleri içeren bir nesne.

string collection optional
    Sorgulanacak koleksiyonun adı. Belirtilmezse alanadı veritabanı sorgulanır.

Döndürür

XQuery sonuçlarını temsil eden dizelerden oluşan bir dizi. Sorgu sonuç döndürmezse boş bir dizi döndürür.

Notlar

Aşağıdaki örneklerde alanadı veritabanının nasıl sorgulanacağı gösterilmektedir.

Sorgu söz dizimi ayrıntılı olarak şu sayfada açıklanmıştır: XQuery standardı sayfası. XQuery hataları komut dizisi hataları olarak bildirilir. Güncelleme ifadeleri depo tarafından yürütülür; bu nedenle bu yöntemi yalnızca sorgu kasıtlı olarak değişiklik yapacaksa kullanın.

Tüm müşteri düğümlerini dize olarak sorgulama

1
2
var results = $XmlRepository.Query('//Customer');
$Xml.InnerXml( 'Customer', results.join() );

Parametrelerle kimliğe göre müşteri sorgulama

1
2
3
4
var results = $XmlRepository.Query('//Customer[Id=$id]', {
id : $Xml.Evaluate('CustomerId')
 });
$Xml.InnerXml( 'Customers', results.join() );

XQuery ile müşteri adını güncelleme

1
2
3
$XmlRepository.Query('for $customer in //Customer[Id=$id] return replace value of node $customer/Name with "Lady Gaga"', {
   id : $Xml.Evaluate('CustomerId')
});

XQuery ile yeni XML düğümü ekleme

1
2
3
4
$XmlRepository.Query('insert node (<Kaynak><Id>{$newId}</Id><Ad>{$newName}</Ad></Kaynak>) as last into /KVKEnvanter/Tanimlar/Kaynaklar', {
    newId: newId,
    newName: name.trim()
});

XQuery güncellemesiyle kayıt silme

1
2
3
4
5
6
7
$XmlRepository.Query('let $nodeValue := fn:parse-xml-fragment($nodeValue)' +
                     'for $record in Relation[Id=$id]/RepHistory/RepHistoryRecord[InstanceId=$instanceId] return ' +
                     '(delete node $record)', {
   id : relationId,
   instanceId : $Xml.Evaluate('SelectedHistory/Id'),
   nodeValue : $Xml.SelectSingle('.').InnerXml()
});

Info

Süreç veritabanını sorgulamak için collection anahtar sözcüğünü kullanın ve veritabanının GUID değerini belirtin.

Süreç veritabanlarında GUID değerini şu yöntemle alabilirsiniz: $Instance.ProcessId.

Süreç veritabanı koleksiyonunu sorgulama

1
2
3
4
var results = $XmlRepository.Query('collection("49551ed3-6229-408a-aaaa-eb510463acad")//Customer[Id=$id]', {
   id : $Xml.Evaluate('CustomerId')
 });
$Xml.InnerXml('Customers', results[0]);

Ayrıca bkz.