Hello,
I would like to assign a sequence to a variable and then share this variable between two expressions. Particularly I want to create a list of documents to delete from the db and then return the number of deleted documents.
Code sketch of what I am trying:
let $nodes := [...]
let $base-uris := for $node in $nodes return base-uri($node)
let $distinct-base-uris := distinct-values($base-uris)
for $base-uri in $distinct-base-uris return db:delete("db", $base-uri),
return count($distinct-base-uris)
---
The problem with this approach is that $distinct-base-uris is local to the first expressions and not in scope for the count call.
I tried to just duplicate all code, but then I get an error message that "no updating expression [is] allowed".
Is there any way to achieve what I want and put my value in a scope accessible by both expressions?
Regards,
Johannes
Hi Johannes,
Am 16.01.2013 11:31, schrieb Johannes Krampf:
I would like to assign a sequence to a variable and then share this variable between two expressions. Particularly I want to create a list of documents to delete from the db and then return the number of deleted documents.
[...]
Is there any way to achieve what I want and put my value in a scope accessible by both expressions?
try this:
let $nodes := ..., $base-uris := $nodes/base-uri(), $distinct-base-uris := distinct-values($base-uris) return ( for $base-uri in $distinct-base-uris return db:delete("db", $base-uri), db:output(count($distinct-base-uris)) )
Hope that helps, cheers, Leo
Hi Leo,
this worked like a charm, thank you! (And is also documented in the wiki, shame on me for not seeing this.)
- Johannes
On 01/16/2013 03:44 PM, Leo Wörteler wrote:
Hi Johannes,
Am 16.01.2013 11:31, schrieb Johannes Krampf:
I would like to assign a sequence to a variable and then share this variable between two expressions. Particularly I want to create a list of documents to delete from the db and then return the number of deleted documents.
[...]
Is there any way to achieve what I want and put my value in a scope accessible by both expressions?
try this:
let $nodes := ..., $base-uris := $nodes/base-uri(), $distinct-base-uris := distinct-values($base-uris) return ( for $base-uri in $distinct-base-uris return db:delete("db", $base-uri), db:output(count($distinct-base-uris)) )
Hope that helps, cheers, Leo
basex-talk@mailman.uni-konstanz.de