Google Chercher dans diml.org
[ english ]

 Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

Data Injection Markup Language

Document test : extension SQL

Auteur : V.G. FREMAUX
E.I.S.T.I. / Cergy, France
Laboratoire de Recherches Appliquées / NTIC

Version: FR 1.1 / Février 2003, EN 1.1 / February 2003

Autres documents

Spécification DIML (RFC locale) : essi_fr.dim

Document de test DIML : dimltest_fr.dim

Tutoriel complet sur le DIML : accueil du tutoriel (en ligne)

Objet de ce document

Ce document expérimente les fonctions d'extension SQL du moteur ESSI.

Instruction <%sqlsource

<%sqlsource 
   name="testsource" source="DBI:mysql:mysql;host=localhost" 
   login="root" password="" %>

Cette instruction permet de définir des connexions SQL à n'importe quel modèle compatible DBI Perl. Les connexions sont mémorisées, et peuvent être utilisées par n'importe quelle autre instruction de cette extension.

La variable SQL::LAST_DEFINED_SOURCE contient le dernier nom de modèle SQL défini par l'instruction <%sqlsource. Il sert de connexion par défaut pour l'instruction <%sql :

<%%SQL::LAST_DEFINED_SOURCE%%> testsource

Instructions de requête : <%sql

Syntaxes reconnues

<%sql 
   source="source" 
   query="diml-escaped-sql" 
   alias="aliased-scope-prefix" 
   [fromhtml] %>
 
<%sql 
   source="source" 
   query=DIML_VAR 
   alias="aliased-scope-prefix" 
   [fromhtml] %>
 
<%sql 
   source="source" 
   alias="aliased-scope-prefix" 
   [fromhtml] %>
diml-query
<%endsql %>

Requête en forme littérale

<%sql 
   source="testsource" query="SELECT * FROM user" %>


Cette instruction permet d'effctuer un transfert d'une table vers l'espace DIML en construisant automatiquement les tables de sorties. La requête doit être une requête de lecture pour produire un résultat tangible.

Hosts User Password

Requête dans un template

<%sql 
   source="testsource" query=%SQL_QUERY% %>
 
<TEMPLATE ID="SQL_QUERY">
SELECT
   *
FROM
   user
WHERE
   host = 'localhost'
</TEMPLATE>

Cette deuxième forme permet de lire une requête dans une variable ou un template DIML. Elle permet par exemple de rassembler les requêtes d'un projet dans un document DIML externe, qui après importation dans ce document, pourront être appelées sous une forme courte. Cette forme est surtout utile pour les requêtes utilisées plusieurs fois dans un projet.

Hosts User Password

Requête "inline"

<%sql 
   source="testsource" %>
SELECT
   *
FROM
   user
WHERE
   User != ''
<%endsql %>

Cette dernière forme permet d'écrire directement en ligne la requête SQL. Elle convient aux requêtes longues et complexes utilisées une seule fois dans un projet. Dans ce cas, l'attribut query est INTERDIT. La requête est capturée entre la tête d'instruction <%sql... et la fin d'instruction <%endsql %>. Elle peut contenir des instructions DIML, mais aucune instruction liée au SQL.

Hosts User Password

Instructions d'entrée de données : <%sqlin

Syntaxes reconnues

<%sqlin 
   source="data-source" 
   filter="variable-selecting-prefix" 
   [tohtml] 
   [quote="database-quote-escaping"] 
   query="query-head" 
   crypt="field-list-for-encryption" 
   [filter="perl-regexp"] %>

Entrée de formulaire

Cette forme permet d'alimenter une table d'une base de données avec les données d'un formulaire. Les données à insérer sont extraites du flux CGI par "reconnaissance de forme". Une requête de ce type ne peut effectuer qu'une seule écriture de ligne dans une table. Par contre, en utilisant des filtres de reconnaissance différents, plusieurs appels de l'instruction <%sqlin peuvent alimenter plusiers tables différentes à partir du flux CGI d'entrée.

<%sqlin source="testsource" filter="FORM::sql_" [tohtml] 
   [quote="\'"] query="REPLACE INTO user" crypt="password" %>

Host
User
Password

Envoyer les données dans la table

Hosts User Password


All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned