Xquery et sql

Résolu/Fermé
subgenk Messages postés 85 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 20 décembre 2012 - 10 déc. 2010 à 15:32
subgenk Messages postés 85 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 20 décembre 2012 - 10 déc. 2010 à 16:49
Bonjour,

J'essaye actuellement d'interroger une base depuis une xquery cependant je ne sais pas du tout comment m'y prendre et j'avoue que même après avoir passer 1 heure à lire de la doc je ne sais pas comment amorcer des choses toutes simples comme

-> Spécifier l'adresse de la base
-> récupérer le resultat d'une requete
-> ecrire une requete.

Par exemple j'ai le cas d'exemple suivant.
J'ai une base qui contient une table 'transcod' dans cette table il y a 4 colonnes (tr_id : integer, tr_cod : char(30), tr_value : char(30), tr_type : char(30)).

Côté Xquery j'ai en entrée un fichier xml de cette définition :
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="SourceMessage">
    	<xsd:complexType>
            <xsd:sequence>
    			<xsd:element name="firstName">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="name">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="country">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="currency">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
			</xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>


j'aimerai en fait faire du passe plat au niveau de ma xquery mais pouvoir modify mes country code et currency code qui sont répertorié en base.
Exemple : la base a une ligne
1, '1','France','country'
2,'1','EUR','currency'

dans le xml j'ai
<SourceMessage>
   <firstName>Test</firstName>
   <lastName>Test</lastName>
   <country>1</country>
   <currency>1</currency>
</SourceMessage>


et j'aimerai le transformer en
<SourceMessage>
   <firstName>Test</firstName>
   <lastName>Test</lastName>
   <country>France</country>
   <currency>EUR</currency>
</SourceMessage>

Grâce à ma xquery.. et donc en allant rechercher les valeurs en base de donnée..
Quelqu'un pourrait m'expliquer ? ou me renvoyer vers une doc explicite ?parce que je n'ai réellement rien trouvé avec un exemple concret... =/

Merci d'avance
A voir également:

1 réponse

subgenk Messages postés 85 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 20 décembre 2012 5
10 déc. 2010 à 16:49
J'ai résolu partiellement mon problème il fallait déjà créer un jndi datasource pour pointer vers ma base puis m'en servir dans ma requete.

Dans la requete que j'ai créée :
fn-bea:execute-sql(
            		'ds.MyJDBCDataSource',
    				xs:QName('countryCode'),
    				'select tr_value from TRANSCODIFICATION.TRANSCOD where tr_code=? AND tr_type=?',
		    		data($sourceMessage1/countryCode/text()),
    				xs:string('country')

j'obtiens une erreur qui me dit que la fonction n'existe pas ou que le nombre de paramètres est mauvais...
là je suis à sec u_u je trouve pas pourquoi workshop ne reconnait pas la fonction vu que c'est à la base lui qui me l'a proposé... =/
0