WWW - ORACLE

Arthur Secret <secret@hpwww.cern.ch>
Message-id: <9306161216.AA07442@dxmint.cern.ch>
From: Arthur Secret <secret@hpwww.cern.ch>
Subject: WWW - ORACLE
To: www-talk@nxoc01.cern.ch
Date: Wed, 16 Jun 93 14:15:08 METDST
Mailer: Elm [revision: 70.85]
Hello,

Forwarded is a mail from Guy Decoux presenting his improvements
made on the WWW-Oracle Gateway.

To know what has been done so far on this subject (to my knowledge), you should
access http://info.cern.ch/hypertext/WWW/RDBGate/Overview.html

(Begin forwarded message)
>
>
> This is an adaptation of Arthur Secret's work.
>
> Characteristics
> ---------------
>
>   * only the condition of the WHERE clause is required
>     in the search text
>  
>
>  * links to other queries can be made.
>
>   * multiple styles (glossaries, lists, plaintext, ...)
>
>   * queries to multiple databases are possible.
>
>   * only the server knows the access details for the
>    database (database name, username, password).
>
>   * no modifications for the clients, only the server is upgraded.
>
>   * possible access control to restrict what systems can
>     query a specific table (adaptation of "tcp_wrapper"
>     - Wietse Venema (wietse@wzv.win.tue.nl)).
>
>   * "oracle/" must be specified in the pathname of the document.
>
> Syntax
> ------
>
>  With each document (suffix ".html") is associated a file with  
>suffix
>".sql". This file defines both the SQL statement to be used
>when a query is done on the file, and also the format of the output  
>to be returned. The file format is :
>
>   * head (optional) : normal text with possible keywords
>      - <unesc> condition of the WHERE clause (HTUnEscape)
>      - <esc> encoded condition (HTEscape).
>      
>
>      The macros <unesc> and <esc> are replaced by the
>      search text entered by the user in escaped (URL)
>      or unescaped (as typed) form.
>
>   * the SELECT clause is given between tags <SELECT ...> </SELECT>.  
>Syntax
>is <SELECT option = string, ...>. The following options can be used  
>(all
>optional) :
>
>     - type=tableau : for output like
>
>          col1  col2 ... coln
>          -------------------
>          aaa   aaa  ... aaa
>          bbb   bb   ... b
>                 ...
>          ccc   c    ... cc
>
>     - database : database name (default A)
>     - username : oracle username (default SCOTT)
>     - password : password (default TIGER)
>     - format   : default C format to apply to each returned value
>(default, "%s=%s")
>     - maxselect: maximum number of returned row (default 40).
>
> The names of options are not case sensitive.  The <select>
> block is expanded to the returned results.
>
>   * this can be repeated ("head", "<select> block", "head", "
>     <select> block", ...)
>
> In the SELECT clause, you can specify (in comment /* */) a C  
>"printf" format string (after
>the column name, or alias) to display the returned value. This format  
>can have 3 %s (like default format of tag <SELECT>).  These are used
>to output the following string values:
>
>     - 1st %s for column name (or alias, if specified)
>     - 2nd and 3rd %s for the returned value (see example below).
>
> The SELECT clause is also a C format whith a maximum of 8  
>occurrences of "%s", each used for the condition of the WHERE clause.
>
> Text can be put before (and after) each row.
>
> Example
> -------
>
> The following document "http://moulon.inra.fr/oracle/A/projet.html"
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
>~~~~~~
>                                                                         
>Projets
>                            DESCRIPTION D'UN PROJET
>                                       
>
>   Interrogation de la relation projets[1] sur un quelconque de ces  
>champs,
>   afin de retrouver les caracteristiques associees telles que  
>description,
>   bibliographie, ou la carte.
>   
>
>   Attention : mefiez vous des "faux-amis".
>   
>
>   Certains champs peuvent preter a confusion lors de  
>l'interrogation, par
>   exemple le champ responsable figurant a la fois dans les relations  
>projets
>   et dispositif. Pour eviter de tels problemes, si vous vous doutez  
>d'une
>   confusion possible, prefixez le champ par le nom de la relation.
>   
>
>   Par exemple, "projets.responsable like 'ts%'"
>   
>
>   -------
>   
>
>   Retour au menu[2].
>     [End]
>
>
>FIND <keywords>, 1-2, Back, Up, Quit, or Help:
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
>~~~~~~~
>
> is associated with file "projet.sql" :
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
>~~~~~~~
> <h1>Projets associes a <unesc></h1><ul>
> <select>
> /*<li>*/ select rowid
> /*%0.0s<a  
> href=http://moulon.inra.fr:80/oracle/A/projet.row?rowid='%s'>*/,
> projet "prj", type "type" , responsable "resp"/*%s=%s*/
> from projets
> where %s/*</a>
> */
> </select>
> </ul><p><h2>Caracteristiques associees</h2>
> <h3>
> <a  
> href=http://moulon.inra.fr:80/oracle/A/biblio.sql?<esc>>Bibliographie< 
> /a>
> </h3>
> <h3><a  
> href=http://moulon.inra.fr:80/oracle/A/carte.sql?<esc>>Carte</a></h3>
> <h3><a  
> href=http://moulon.inra.fr:80/oracle/A/dispositif.sql?<esc>>dispositif 
> </a>
> </h3>
> <h2><a href=http://moulon.inra.fr:80/oracle/A/projet.lis?<esc>>Liste  
> </a>
> des reponses</h2>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
>
>  Query "FIND projet like 'P%'" gives :
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
>~~~~~~~
>                                                               projet  
> like 'P%'
>                      PROJETS ASSOCIES A PROJET LIKE 'P%'
>                                       
>
>      prj=P1type=type P1resp=ts (decoux@moulon.inra.fr)[1]
>      
>
>      prj=P2type=type P2resp=decoux[2]
>      
>
>      prj=P3type=type P3resp=ts[3]
>      
>
> Caracteristiques associees
> 
>
>  BIBLIOGRAPHIE[4]
>  
>
>  CARTE[5]
>  
>
>  DISPOSITIF[6]
>  
>
> Liste [7] des reponses
> 
>
>   
>
>     [End]
> 
>
> 
>
> FIND <keywords>, 1-7, Back, Up, Quit, or Help: 
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
>
>  i.e. :
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
> <ISINDEX><TITLE>projet like 'P%'</TITLE>
> <h1>Projets associes a projet like 'P%'</h1><ul>
> <li><a  
> href=http://moulon.inra.fr:80/oracle/A/projet.row?rowid='000002BF.0000 
> .0003'>prj=P1type=type P1resp=ts (decoux@moulon.inra.fr)</a>
> <li><a  
> href=http://moulon.inra.fr:80/oracle/A/projet.row?rowid='000002BF.0001 
> .0003'>prj=P2type=type P2resp=decoux</a>
> <li><a  
> href=http://moulon.inra.fr:80/oracle/A/projet.row?rowid='000002BF.0003 
> .0003'>prj=P3type=type P3resp=ts</a>


> </ul><p><h2>Caracteristiques associees</h2>
> <h3>
> <a  
> href=http://moulon.inra.fr:80/oracle/A/biblio.sql?projet%20like%20%27P 
> %25%27>Bibliographie</a>
> </h3>
> <h3><a  
> href=http://moulon.inra.fr:80/oracle/A/carte.sql?projet%20like%20%27P% 
> 25%27>Carte</a></h3>
> <h3><a  
> href=http://moulon.inra.fr:80/oracle/A/dispositif.sql?projet%20like%20 
> %27P%25%27>dispositif</a>
> </h3>
> <h2><a  
> href=http://moulon.inra.fr:80/oracle/A/projet.lis?projet%20like%20%27P 
> %25%27>Liste </a>
> des reponses</h2>
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
>
> Files are :
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
>
>  * projet.row
>
> <h2>Description generale d'un projet</h2>
> <select format="%s = %s<p>
> ">
> select projet,type,t1d,t2d,morpho,physio,qtl,responsable,mere,pere,
> CARTE/*%s = <a  
> href=http://moulon.inra.fr:80/oracle/A/carte.row?carte='%s'>%s</a><p>* 
> /,remarques
> from projets
> where %s
> </select>
>
>  * biblio.sql
>
> <h2>Bibliographie pour <unesc></h2><ul>
> <select>
> /*<li>*/select unique biblio.rowid "-"
> /*%0.0s<a  
> href=http://moulon.inra.fr:80/oracle/A/biblio.row?rowid='%s'>*/,
> ref , auteurs from projet_biblio, biblio, projets
> where (num_ref = ref) and (num_prj=projet) and %s /*</a>
> */
> </select>
> </ul><p><h1><a  
> href=http://moulon.inra.fr:80/oracle/A/biblio.lis?<esc>>Liste
> </a> des reponses</h1>
>
>  * carte.sql :
>
> <h2>Cartes pour <unesc></h2><ul>
> <select>
> /*<li>*/select cartes.rowid "-"
> /*%0.0s<a  
> href=http://moulon.inra.fr:80/oracle/A/carte.row?rowid='%s'>*/,
> cartes.carte , population "pop"
> from cartes, projets
> where (projets.carte = cartes.carte) and %s/*</a>
> */
> </select>
> </ul><p><h1><a  
> href=http://moulon.inra.fr:80/oracle/A/carte.lis?<esc>>Liste
> </a> des reponses</h1>
>
>  * dispositif.sql 
>
>
> <h2>Dispositifs pour <unesc></h2><ul>
> <select format="%s=%s">
> /*<li>*/select unique dispositif.rowid "-"
>/*%0.0s<a  
> href=http://moulon.inra.fr:80/oracle/A/dispositif.row?dispositif.rowid 
> ='%s'>*/,
> experience "exp" , test
> from dispositif_projet, dispositif, projets
> where (num_exp = experience) and (num_prj = projet) and (%s)/*</a>
> */
> </select>
> </ul><p><h1><a  
> href=http://moulon.inra.fr:80/oracle/A/dispositif.lis?<esc>>Liste  
> </a>
> des reponses</h1>
> <p>Voir aussi les 
>
> <a  
> href=http://moulon.inra.fr:80/oracle/A/caract.html>caracteristiques</a 
>
> associees a chaque dispositif.>
>
>  * projet.lis :
>
> Reponse a la question <unesc><pre>
> <select format="%s = %s
> ">
> select * from projets where %s/*//
> */
> </select>
> </pre>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
> ~~~~~~~
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Guy Decoux
> INRA
> Laboratoire de Genetique Vegetale
> Ferme du Moulon
> 91190 Gif sur Yvette
>
> Tel :    (33 1) 69 41 97 37
> Fax :    (33 1) 69 41 27 90
> e-mail : decoux@moulon.inra.fr
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> p.s.
>
>  Please note :
>
>   1) I program like i speak english (very BAD, excuse me)
>
>   2) A french and comprehensible version of this text is
>        http://moulon.inra.fr/oracle/www_oracle.html
>
>
--
Arthur Secret, e-mail: secret@dxcern.cern.ch