Güncelleyen ve Güncellemeyen İfadeleri Bir Arada Kullanma¶
Güncelleyen ifadeler 5 güncelleme ilkelini kapsayan XQuery ifadeleridir.
Güncelleyen ve güncellemeyen ifadelerin bir arada kullanımıyla ilgili kurallar vardır:
-
Öncelikle, Güncelleme İfadelerinin herhangi bir değer döndürmediğini hatırlayalım. Yalnızca bir listeye güncelleme isteği eklerler. Sonunda listedeki güncellemeler, komut dizisinin yürütülmesinin sonunda (veya dönüştürme ifadesindeki modify ** yan tümcesinin sonunda) uygulanır. **
-
Bu nedenle güncelleyen ifadelere, anlamlı bir değer beklendiği yerlerde izin verilmez. Örneğin, bir ifkoşulunda, bir let :=ifadesinin sağ tarafında, bir in bölümünde, bir for ifadesinde vb.
-
Güncelleyen ve güncellemeyen 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 ifadelerle değer 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.
fn:error() İşlev ve boş dizi () hem güncelleyen hem de güncellemeyen ifadelerde yer alabildikleri için özel durumlardır.
-
Benzer şekilde, bir if veya bir typeswitch dalı tutarlı olmalıdır: her ikisi de güncelleyen ya da her ikisi de güncellemeyen olmalıdır. Her iki dal da güncelleyen ise if ifadesinin kendisi güncelleyen olarak kabul edilir; tersi durumda da aynı kural geçerlidir.
-
Bir işlevin gövdesi güncelleyen bir ifadeyse, işlev şu anahtar sözcükle tanımlanmalıdır: updating Anahtar sözcük. Örnek:
1 2 3 | |
Böyle bir işlevin çağrısı da güncelleyen bir ifade olarak kabul edilir. Doğal olarak, güncelleyen bir işlev değer döndürmez ve bu nedenle dönüş türü tanımlayamaz.