Güncelleme Yapan ve Güncelleme Yapmayan İfadeleri Bir Arada Kullanma¶
Güncelleme yapan ifadeler , 5 güncelleme ilkelini kapsayan XQuery ifadeleridir.
Güncelleme yapan ve güncelleme yapmayan ifadeleri bir arada kullanmayla ilgili kurallar vardır:
-
Öncelikle, Güncelleme İfadelerinin herhangi bir değer döndürmediğini hatırlayalım. Bunlar yalnızca bir listeye güncelleme isteği ekler. Sonunda listedeki güncellemeler, bir betik yürütmesinin sonunda (veya modify ** yan tümcesinin sonunda, transform** ifadesi söz konusu olduğunda) uygulanır.
-
Bu nedenle güncelleme yapan ifadelere, anlamlı bir değer beklendiği yerlerde izin verilmez. Örneğin bir ififadesinin koşulunda, bir let :=ifadesinin sağ tarafında, in bölümünde, bir for ifadesinde ve benzeri yerlerde.
-
Güncelleme yapan ve güncelleme yapmayan ifadelerin bir dizide (virgül işleci) bir arada kullanılmasına izin verilmez. Teknik olarak mümkün olsa da, değer döndüren ve döndürmeyen ifadeleri karıştırmak pek anlamlı olmaz; dizi işleci, bileşenlerinin döndürdüğü dizilerin birleştirilmiş hâlini döndürür.
Şu fn:error() işlev ve boş dizi () özeldir; çünkü hem güncelleme yapan hem de güncelleme yapmayan ifadelerde yer alabilirler.
-
Benzer şekilde, bir if veya bir typeswitch ifadesinin dalları tutarlı olmalıdır: ikisi de güncelleme yapan veya ikisi de güncelleme yapmayan olmalıdır. Her iki dal da güncelleme yapıyorsa if ifadesinin kendisi güncelleme yapan olarak değerlendirilir; tersi durumda da aynı kural geçerlidir.
-
Bir işlevin gövdesi güncelleme yapan bir ifadeyse, işlevin updating anahtar sözcüğüyle bildirilmesi gerekir. Örnek:
1 2 3 | |
Böyle bir işlev çağrısı da güncelleme yapan bir ifade olarak değerlendirilir. Doğal olarak güncelleme yapan bir işlev değer döndürmez ve bu nedenle dönüş türü bildiremez.