XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 05:55 AM
How can I change a variable value inside a block ?

let $x:=3
let $y := if($x = 3) then
let $x := 4
return 1
else 2
return $x

The previous code will always return 3, but I want it to return 4. How can I do that ? Is it possible to modify variable values inside blocks ?

PS. I`m running this query agains eXist XML Database.

Postnext
Alberto MassariSubject: Update variable value inside block
Author: Alberto Massari
Date: 13 Sep 2005 06:19 AM
Hi Marius,
the XQuery language does not allow changing the value assigned to a variable; so, in your code, you are defining a new $x variable with a narrower scope.
This is a query equivalent to the one you wrote:

declare function computeY($x)
{
if($x = 3) then 1
else 2
};

let $x := 3
let $y := computeY($x)
return $x

Hope this helps,
Alberto

Postnext
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 06:27 AM
Thanks.

This helps me to understant why my code does not work. But could provide an example of how I could obtain the new value as I would from Java for example? I could return an XML node with 2 childs representing the 2 values, and then obtain the values from that node, but this would affect the performance as one of my variables is a quite large sequence.

Postnext
Alberto MassariSubject: Update variable value inside block
Author: Alberto Massari
Date: 13 Sep 2005 06:39 AM
Hi Marius,
in XQuery you have to find out the rule or the formula that computes the correct value.
Your snippet is too simple for me to guess what you are doing; can you post the real code you are dealing with?

Alberto

Posttop
Marius EnacheSubject: Update variable value inside block
Author: Marius Enache
Date: 13 Sep 2005 07:11 AM
Thanks.

This helps me to understant why my code does not work. But could provide an example of how I could obtain the new value as I would from Java for example? I could return an XML node with 2 childs representing the 2 values, and then obtain the values from that node, but this would affect the performance as one of my variables is a quite large sequence.

 
Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.