This message presents changes made by Guy Decoux to HTOracle.h (see new version), HTRetrieve.c (see new version), and HTOracle.pc (see new version).
Look also at the french version of this document.
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