|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] Global variables in XQueryTorsten Grust grust at in.tum.deWed Oct 4 18:34:42 PDT 2006
Massimo, the variable $my:global indeed is globally visible in your XQuery text -- it remains, however, a variable in the usual XQuery sense: it's just a name, bound to the value 1. This binding cannot be updated. The let-expression inside function my:fact() introduces a *new name* (bound to the xs:integer value 2). This local new name shadows the global name. No ''update'' occurs, though. Best wishes, --Torsten On Oct 4, 2006, 5:24 PM, Massimo Franceschet wrote with possible deletions: > Hi, > > I am confused about the behaviour of (what are called) global > variables in > XQuery. In paricular, I am not able to modify the value of a global > variable inside a user-defined function. Here is an example: > > declare namespace my = 'my:stuff'; > declare variable $my:global as xs:integer := 1; > > declare function my:fact($n as xs:integer) as xs:integer > { > let $my:global := $my:global + 1 > return if ($n < 2) > then 1 > else $n * my:fact($n - 1) > }; > > let $x := my:fact(10) > return $x div $my:global > > When I run this query the global variable $my:global is not > modified by > the function my:fact and retains its original value (1). The result > of the > query is always 10! (instead of 10!/11). > > Massimo > > > _______________________________________________ > http://x-query.com/mailman/listinfo/talk > http://x-query.com/mailman/listinfo/talk > -- | Prof. Dr. Torsten Grust http://x-query.com/mailman/listinfo/talk | | http://www-db.in.tum.de/~grust/ | | Database Systems - Technische Universität München (Germany) |
|
Purchase Stylus Studio Online Today!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






