r9753: all docbook fixes done except for removing hovertext
[clsql.git] / doc / ref-oodml.xml
1 <?xml version='1.0' ?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4 <!ENTITY % myents SYSTEM "entities.inc">
5 %myents;
6 ]>
7
8 <!-- Object Oriented Data Manipulation Language --> 
9 <reference id="ref-oodml"> 
10   <title>Object Oriented Data Manipulation Language (OODML)</title> 
11     <partintro>
12     <para>
13       Object Oriented Data Manipulation Language (OODML) provides a Common Lisp
14       Object System (CLOS) interface to SQL databases. View classes are defined with
15       the <link linkend="ref-ooddl">OODDL</link> interface and objects are read and
16       written with the OODML.
17     </para>
18     <para>
19       The main function for reading data with the OODML is the <link
20       linkend="select"><function>select</function></link>
21       function. The <function>select</function> is also used in the
22       FDML. However, when <function>select</function> is given a view
23       class name, it returns a list of instances of view classes.
24     </para>
25     <para>
26       View class instances can be updated to reflect any changes in
27       the database with the functions <link
28       linkend="update-slot-from-record"><function>update-slot-from-record</function></link>
29       and <link
30       linkend="update-instance-from-records"><function>update-instance-from-records</function></link>.
31     </para>
32     <para>To update the database to reflect changes made to instances of view classes, use the functions <link
33       linkend="update-records-from-instance"><function>update-records-from-instance</function></link>,
34       <link
35       linkend="update-record-from-slot"><function>update-record-from-slot</function></link>, and
36       <link
37       linkend="update-record-from-slots"><function>update-record-from-slots</function></link>.
38     </para>
39     <para>
40       The function <link
41       linkend="delete-instance-records"><function>delete-instance-records</function></link>
42       deletes the records corresponding to an instance of a view
43       class.
44     </para>
45   </partintro>
46
47   <refentry id="db-auto-sync">
48     <refnamediv>
49       <refname>*DB-AUTO-SYNC*</refname>
50       <refpurpose>Enables SQL storage during Lisp object creation.</refpurpose>
51       <refclass>Variable</refclass>
52     </refnamediv>
53     <refsect1>
54       <title>Value Type</title>
55       <para>
56         Boolean
57       </para> 
58     </refsect1>
59     <refsect1>
60       <title>Initial Value</title>
61       <para>&nil;</para>
62     </refsect1>
63     <refsect1>
64       <title>Description</title> 
65       <para>
66         When this variable is &t; an instance is stored in the SQL
67         database when the instance is created by
68         <function>make-instance</function>. When this variable is
69         &nil;, which is the default value, &clsql; behaves like
70         &commonsql;: instances of view classes are stored to the SQL
71         database only when <link
72         linkend="update-record-from-slots"><function>update-record-from-slots</function></link>
73         is called.
74       </para>
75     </refsect1>
76     <refsect1>
77       <title>Examples</title>
78       <screen>
79         (let ((instance (make-instance 'foo)))
80           (update-record-from-slots instance))
81
82         ;; is equivalent to
83
84         (let ((*db-auto-sync* t))
85           (make-instance 'foo))
86       </screen>
87     </refsect1>
88     <refsect1>
89       <title>Affected By</title>
90       <para>None.</para>
91     </refsect1>
92     <refsect1>
93       <title>See Also</title>
94       <simplelist>
95         <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
96       </simplelist>
97     </refsect1>
98     <refsect1>
99       <title>Notes</title>
100       <para>None.</para>
101     </refsect1>
102   </refentry>
103
104   <refentry id="default-update-objects-max-len">
105     <refnamediv>
106       <refname>*DEFAULT-UPDATE-OBJECTS-MAX-LEN*</refname>
107       <refpurpose>The default maximum number of objects each query to perform a join</refpurpose>
108       <refclass>Variable</refclass>
109     </refnamediv>
110     <refsect1>
111       <title>Value Type</title>
112       <para>
113         (or null integer)
114       </para> 
115     </refsect1>
116     <refsect1>
117       <title>Initial Value</title>
118       <para>&nil;</para>
119     </refsect1>
120     <refsect1>
121       <title>Description</title>
122       <para>
123         This special variable provides the default value for the
124         <parameter>max-len</parameter> argument of the function <link
125         linkend="update-objects-joins"><function>update-object-joins</function></link>.
126       </para>
127     </refsect1>
128     <refsect1>
129       <title>Examples</title>
130       <screen>
131         (setq *default-update-objects-max-len* 100)
132       </screen>
133     </refsect1>
134     <refsect1>
135       <title>Affected By</title>
136       <para>None.</para>
137     </refsect1>
138     <refsect1>
139       <title>See Also</title>
140       <simplelist>
141         <member><link linkend="update-objects-joins"><function>update-object-joins</function></link></member>
142       </simplelist>
143     </refsect1>
144     <refsect1>
145       <title>Notes</title>
146       <para>None.</para>
147     </refsect1>
148   </refentry>
149
150   <refentry id="delete-instance-records">
151     <refnamediv>
152       <refname>DELETE-INSTANCE-RECORDS</refname>
153       <refpurpose>Delete SQL records represented by a view class
154       object.</refpurpose>
155       <refclass>Function</refclass>
156     </refnamediv>
157     <refsect1>
158       <title>Syntax</title>
159       <synopsis>
160       <function>(delete-instance-records object)</function> => <returnvalue><!-- result --></returnvalue></synopsis>
161     </refsect1>
162     <refsect1>
163       <title>Arguments and Values</title>
164       <variablelist>
165         <varlistentry>
166           <term><parameter>object</parameter></term>
167           <listitem>
168             <para>
169               An instance of a view class.
170             </para>
171           </listitem>
172         </varlistentry>
173       </variablelist>
174     </refsect1>
175     <refsect1>
176       <title>Description</title>
177       <para>Deletes the records represented by
178       <parameter>object</parameter> in the appropriate table of the
179       database associated with <parameter>object</parameter>. If
180       <parameter>object</parameter> is not yet associated with a
181       database, an error is signalled.
182       </para>
183     </refsect1>
184     <refsect1>
185       <title>Examples</title>
186       <screen>
187         * (def-view-class tab () ((a :type integer :db-kind :key) (b :type string)))
188         #&lt;clsql-sys::db-standard-class tab> 
189         * (defvar obj (let ((*db-auto-sync* t))
190                         (make-instance 'tab :a 5 :b "the string")))
191         * (start-sql-recording :type :both)
192         * (delete-instance-records obj)                 
193       </screen>
194     </refsect1>
195     <refsect1>
196       <title>Side Effects</title>
197       <para>
198         Deletes data from the SQL database.
199       </para>
200     </refsect1>
201     <refsect1>
202       <title>Affected by</title>
203       <para>
204         Permissions granted by the SQL database to the user in the database connection.
205       </para>
206     </refsect1>
207     <refsect1>
208       <title>Exceptional Situations</title>
209       <para>
210         An exception may be signaled if the database connection user does not have
211         sufficient privileges to modify the database.
212       </para>
213     </refsect1>
214     <refsect1>
215       <title>See Also</title>
216       <para>
217         <simplelist>
218           <member><link linkend="update-records"><function>update-records</function></link></member>
219           <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
220         </simplelist>
221       </para>
222     </refsect1>
223     <refsect1>
224       <title>Notes</title>
225       <para>
226         Instances are referenced in the database by values stored in the key slots. If
227         <function>delete-records-from-instance</function> is called with an instance of a class that does
228         not contain any keys, then all records in that table will be deleted. 
229       </para>
230     </refsect1>
231   </refentry> 
232
233   <refentry id="instance-refreshed">
234     <refnamediv>
235       <refname>INSTANCE-REFRESHED</refname>
236       <refpurpose>User hook to call on object refresh.</refpurpose>
237       <refclass>Generic function</refclass>
238     </refnamediv>
239     <refsect1>
240       <title>Syntax</title>
241       <synopsis>
242       <function>(instance-refreshed object)</function> => <returnvalue><!-- result --></returnvalue></synopsis>
243     </refsect1>
244     <refsect1>
245       <title>Arguments and Values</title>
246       <variablelist>
247         <varlistentry>
248           <term><parameter>object</parameter></term>
249           <listitem>
250             <para>
251               The view class object which is being refreshed.
252             </para>
253           </listitem>
254         </varlistentry>
255       </variablelist>
256     </refsect1>
257     <refsect1>
258       <title>Description</title>
259       <para>Provides a hook which is called within an object oriented
260       call to <function>select</function> with a non-nil value of
261       <parameter>refresh</parameter> when the View Class instance
262       <parameter>object</parameter> has been updated from the
263       database. A method specialised on
264       <type>standard-db-object</type> is provided which has no
265       effects. Methods specialised on particular View Classes can be
266       used to specify any operations that need to be made on View
267       Classes instances which have been updated in calls to
268       <function>select</function>.
269       </para>
270     </refsect1>
271     <refsect1>
272       <title>Examples</title>
273       <screen>
274         <!-- examples -->
275       </screen>
276     </refsect1>
277     <refsect1>
278       <title>Side Effects</title>
279       <para>
280         The user hook function may cause side effects.
281       </para>
282     </refsect1>
283     <refsect1>
284       <title>Exceptional Situations</title>
285       <para>
286         None.
287       </para>
288     </refsect1>
289     <refsect1>
290       <title>See Also</title>
291       <para>
292         <simplelist>
293           <member><link linkend="select"><function>select</function></link></member>
294         </simplelist>
295       </para>
296     </refsect1>
297   </refentry> 
298
299   <refentry id="update-instance-from-records">
300     <refnamediv>
301       <refname>UPDATE-INSTANCE-FROM-RECORDS</refname>
302       <refpurpose>Update slot values from database.</refpurpose>
303       <refclass>Function</refclass>
304     </refnamediv>
305     <refsect1>
306       <title>Syntax</title>
307       <synopsis>
308       <function>(update-instance-from-records object &amp;key database)</function> => <returnvalue><!-- result --></returnvalue></synopsis>
309     </refsect1>
310     <refsect1>
311       <title>Arguments and Values</title>
312       <variablelist>
313         <varlistentry>
314           <term><parameter>object</parameter></term>
315           <listitem>
316             <para>
317               An instance of a view class.
318             </para>
319           </listitem>
320         </varlistentry>
321         <varlistentry>
322           <term><parameter>database</parameter></term>
323           <listitem>
324             <para>
325               A database connection.
326             </para>
327           </listitem>
328         </varlistentry>
329       </variablelist>
330     </refsect1>
331     <refsect1>
332       <title>Description</title>
333       <para>Updates the slot values of the View Class instance
334       <parameter>object</parameter> using the attribute values of the
335       appropriate table of <parameter>database</parameter> which
336       defaults to the database associated with
337       <parameter>object</parameter> or, if <parameter>object</parameter> is not associated
338       with a database, <varname>*default-database*</varname>.  Join slots are updated but
339       instances of the class on which the join is made are not
340       updated.
341       </para>
342     </refsect1>
343     <refsect1>
344       <title>Examples</title>
345       <screen>
346         <!-- examples -->
347       </screen>
348     </refsect1>
349     <refsect1>
350       <title>Side Effects</title>
351       <para>
352         Slot values of <parameter>object</parameter> may be modified.
353       </para>
354     </refsect1>
355     <refsect1>
356       <title>Affected by</title>
357       <para>
358         <simplelist>
359           <member>Data in SQL database.</member>
360         </simplelist>
361       </para>
362     </refsect1>
363     <refsect1>
364       <title>Exceptional Situations</title>
365       <para>
366         If <parameter>database</parameter> is not able to be read.
367       </para>
368     </refsect1>
369     <refsect1>
370       <title>See Also</title>
371       <para>
372       </para>
373     </refsect1>
374     <refsect1>
375       <title>Notes</title>
376       <para>
377         <!-- notes --> 
378       </para>
379     </refsect1>
380   </refentry> 
381
382   <refentry id="update-objects-joins">
383     <refnamediv>
384       <refname>UPDATE-OBJECTS-JOINS</refname>
385       <refpurpose>Updates joined slots of objects.</refpurpose>
386       <refclass>Function</refclass>
387     </refnamediv>
388     <refsect1>
389       <title>Syntax</title>
390       <synopsis>
391       <function>(update-objects-joins objects &amp;key (slots t) (force-p t) class-name (max-len *default-update-objects-max-len*))</function> => <returnvalue><!-- result --></returnvalue></synopsis>
392     </refsect1>
393     <refsect1>
394       <title>Arguments and Values</title>
395       <variablelist>
396         <varlistentry>
397           <term><parameter>objects</parameter></term>
398           <listitem>
399             <para>
400               A list of instances of a view class.
401             </para>
402           </listitem>
403         </varlistentry>
404         <varlistentry>
405           <term><parameter>slots</parameter></term>
406           <listitem>
407             <para>
408             </para>
409           </listitem>
410         </varlistentry>
411         <varlistentry>
412           <term><parameter>force-p</parameter></term>
413           <listitem>
414             <para>
415             </para>
416           </listitem>
417         </varlistentry>
418         <varlistentry>
419           <term><parameter>class-name</parameter></term>
420           <listitem>
421             <para>
422               A list of instances of a view class.
423             </para>
424           </listitem>
425         </varlistentry>
426         <varlistentry>
427           <term><parameter>max-len</parameter></term>
428           <listitem>
429             <para>
430             </para>
431           </listitem>
432         </varlistentry>
433       </variablelist>
434     </refsect1>
435     <refsect1>
436       <title>Description</title>
437       <para>Updates from the records of the appropriate database
438       tables the join slots specified by <parameter>slots</parameter>
439       in the supplied list of View Class instances
440       <parameter>objects</parameter>. <parameter>slots</parameter>
441       when &t; means that all join slots with :retrieval :immediate
442       are updated. <parameter>class-name</parameter> is used to
443       specify the View Class of all instance in
444       <parameter>objects</parameter>, when &nil; then the class of the
445       first instance in <parameter>objects</parameter> is
446       used. <parameter>force-p</parameter> when &t; means that all
447       join slots are updated whereas a value of &nil; means that only
448       unbound join slots are updated. <parameter>max-len</parameter>
449       when non-nil specifies that
450       <function>update-object-joins</function> may issue multiple
451       database queries with a maximum of
452       <parameter>max-len</parameter> instances updated in each query.
453       </para>
454     </refsect1>
455     <refsect1>
456       <title>Examples</title>
457       <screen>
458         <!-- examples -->
459       </screen>
460     </refsect1>
461     <refsect1>
462       <title>Side Effects</title>
463       <para>
464         <!-- side effects --> 
465       </para>
466     </refsect1>
467     <refsect1>
468       <title>Affected by</title>
469       <para>
470         <simplelist>
471           <member><link
472           linkend="default-update-objects-max-len"><varname>*default-update-objects-max-len*</varname></link></member>
473         </simplelist>
474       </para>
475     </refsect1>
476     <refsect1>
477       <title>Exceptional Situations</title>
478       <para>
479         Database errors.
480       </para>
481     </refsect1>
482     <refsect1>
483       <title>See Also</title>
484       <para>
485         <simplelist>
486           <member><link
487           linkend="default-update-objects-max-len"><varname>*default-update-objects-max-len*</varname></link></member>
488         </simplelist>
489       </para>
490     </refsect1>
491     <refsect1>
492       <title>Notes</title>
493       <para>
494         <!-- notes --> 
495       </para>
496     </refsect1>
497   </refentry>
498
499   <refentry id="update-record-from-slot">
500     <refnamediv>
501       <refname>UPDATE-RECORD-FROM-SLOT</refname>
502       <refpurpose>Updates database from slot value.</refpurpose>
503       <refclass>Function</refclass>
504     </refnamediv>
505     <refsect1>
506       <title>Syntax</title>
507       <synopsis>
508       <function>(update-record-from-slot object slot &amp;key database)</function> => <returnvalue><!-- result --></returnvalue></synopsis>
509     </refsect1>
510     <refsect1>
511       <title>Arguments and Values</title>
512       <variablelist>
513         <varlistentry>
514           <term><parameter>object</parameter></term>
515           <listitem>
516             <para>
517               An instance of a view class.
518             </para>
519           </listitem>
520         </varlistentry>
521         <varlistentry>
522           <term><parameter>slot</parameter></term>
523           <listitem>
524             <para>
525               The name of a slot in <parameter>object</parameter>.
526             </para>
527           </listitem>
528         </varlistentry>
529         <varlistentry>
530           <term><parameter>database</parameter></term>
531           <listitem>
532             <para>
533               A database connection.
534             </para>
535           </listitem>
536         </varlistentry>
537       </variablelist>
538     </refsect1>
539     <refsect1>
540       <title>Description</title>
541       <para>Updates the value stored in the column represented by the
542       slot, specified by the CLOS slot name
543       <parameter>slot</parameter>, of View Class instance
544       <parameter>object</parameter>. <parameter>database</parameter>
545       specifies the database in which the update is made only if
546       <parameter>object</parameter> is not associated with a
547       database. In this case, a record is created in
548       <parameter>database</parameter> and the attribute represented by
549       <parameter>slot</parameter> is initialised from the value of the
550       supplied slots with other attributes having default
551       values. Furthermore, <parameter>object</parameter> becomes
552       associated with <parameter>database</parameter>.
553       </para>
554     </refsect1>
555     <refsect1>
556       <title>Examples</title>
557       <screen>
558         <!-- examples -->
559       </screen>
560     </refsect1>
561     <refsect1>
562       <title>Side Effects</title>
563       <para>
564         Modifies database.
565       </para>
566     </refsect1>
567     <refsect1>
568       <title>Affected By</title>
569       <para>
570         Nothing.
571       </para>
572     </refsect1>
573     <refsect1>
574       <title>Exceptional Situations</title>
575       <para>
576         Database errors.
577       </para>
578     </refsect1>
579     <refsect1>
580       <title>See Also</title>
581       <para>
582         <simplelist>
583           <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
584           <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
585         </simplelist>
586       </para>
587     </refsect1>
588     <refsect1>
589       <title>notes</title>
590       <para>
591         <!-- notes --> 
592       </para>
593     </refsect1>
594   </refentry> 
595
596   <refentry id="update-record-from-slots">
597     <refnamediv>
598       <refname>update-record-from-slots</refname>
599       <refpurpose>update database from slots of view class object.</refpurpose>
600       <refclass>function</refclass>
601     </refnamediv>
602     <refsect1>
603       <title>syntax</title>
604       <synopsis>
605       <function>(update-record-from-slots object slots &amp;key (database *default-database*))</function> => <returnvalue><!-- result --></returnvalue></synopsis>
606     </refsect1>
607     <refsect1>
608       <title>Arguments and Values</title>
609       <variablelist>
610         <varlistentry>
611           <term><parameter>object</parameter></term>
612           <listitem>
613             <para>
614               An instance of a view class.
615             </para>
616           </listitem>
617         </varlistentry>
618         <varlistentry>
619           <term><parameter>slots</parameter></term>
620           <listitem>
621             <para>
622               A list of slot names in <parameter>object</parameter>.
623             </para>
624           </listitem>
625         </varlistentry>
626         <varlistentry>
627           <term><parameter>database</parameter></term>
628           <listitem>
629             <para>
630               A database connection.
631             </para>
632           </listitem>
633         </varlistentry>
634       </variablelist>
635     </refsect1>
636     <refsect1>
637       <title>Description</title>
638       <para>Updates the values stored in the columns represented by
639       the slots, specified by the clos slot names
640       <parameter>slots</parameter>, of view class instance
641       <parameter>object</parameter>. <parameter>database</parameter>
642       specifies the database in which the update is made only if
643       <parameter>object</parameter> is not associated with a
644       database. In this case, a record is created in the appropriate
645       table of <parameter>database</parameter> and the attributes
646       represented by <parameter>slots</parameter> are initialised from
647       the values of the supplied slots with other attributes having
648       default values. Furthermore, <parameter>object</parameter>
649       becomes associated with <parameter>database</parameter>.
650       </para>
651     </refsect1>
652     <refsect1>
653       <title>Examples</title>
654       <screen>
655         <!-- examples -->
656       </screen>
657     </refsect1>
658     <refsect1>
659       <title>Side Effects</title>
660       <para>
661         Modifies the SQL database.
662       </para>
663     </refsect1>
664     <refsect1>
665       <title>Affected by</title>
666       <para>
667         Nothing.
668       </para>
669     </refsect1>
670     <refsect1>
671       <title>Exceptional Situations</title>
672       <para>
673         Database errors.
674       </para>
675     </refsect1>
676     <refsect1>
677       <title>See Also</title>
678       <para>
679         <simplelist>
680           <member><link linkend="update-record-from-slot"><function>update-record-from-slot</function></link></member>
681           <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
682         </simplelist>
683       </para>
684     </refsect1>
685     <refsect1>
686       <title>Notes</title>
687       <para>
688         <!-- notes --> 
689       </para>
690     </refsect1>
691   </refentry> 
692
693
694   <refentry id="update-records-from-instance">
695     <refnamediv>
696       <refname>UPDATE-RECORDS-FROM-INSTANCE</refname>
697       <refpurpose>Update database from view class object.</refpurpose>
698       <refclass>Function</refclass>
699     </refnamediv>
700     <refsect1>
701       <title>Syntax</title>
702       <synopsis>
703       <function>(update-records-from-instance object &amp;key (database *default-database*))</function> => <returnvalue><!-- result --></returnvalue></synopsis>
704     </refsect1>
705     <refsect1>
706       <title>Arguments and Values</title>
707       <variablelist>
708         <varlistentry>
709           <term><parameter>object</parameter></term>
710           <listitem>
711             <para>
712               An instance of a view class.
713             </para>
714           </listitem>
715         </varlistentry>
716         <varlistentry>
717           <term><parameter>database</parameter></term>
718           <listitem>
719             <para>
720               A database connection.
721             </para>
722           </listitem>
723         </varlistentry>
724       </variablelist>
725     </refsect1>
726     <refsect1>
727       <title>Description</title>
728       <para>Using an instance of a View Class,
729       <parameter>object</parameter>, update the table that stores its
730       instance data. <parameter>database</parameter> specifies the
731       database in which the update is made only if
732       <parameter>object</parameter> is not associated with a
733       database. In this case, a record is created in the appropriate
734       table of <parameter>database</parameter> using values from the
735       slot values of <parameter>object</parameter>, and
736       <parameter>object</parameter> becomes associated with
737       <parameter>database</parameter>.
738       </para>
739     </refsect1>
740     <refsect1>
741       <title>Examples</title>
742       <screen>
743         <!-- examples -->
744       </screen>
745     </refsect1>
746     <refsect1>
747       <title>Side Effects</title>
748       <para>
749         Modifies the database.
750       </para>
751     </refsect1>
752     <refsect1>
753       <title>Affected by</title>
754       <para>
755         Nothing.
756       </para>
757     </refsect1>
758     <refsect1>
759       <title>Exceptional Situations</title>
760       <para>
761         Database errors.
762       </para>
763     </refsect1>
764     <refsect1>
765       <title>See Also</title>
766       <para>
767         <simplelist>
768           <member><link linkend="update-record-from-slot"><function>update-record-from-slot</function></link></member>
769           <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
770         </simplelist>
771       </para>
772     </refsect1>
773     <refsect1>
774       <title>Notes</title>
775       <para>
776         <!-- notes --> 
777       </para>
778     </refsect1>
779   </refentry> 
780
781   <refentry id="update-slot-from-record">
782     <refnamediv>
783       <refname>UPDATE-SLOT-FROM-RECORD</refname>
784       <refpurpose>Update objects slot from database.</refpurpose>
785       <refclass>Function</refclass>
786     </refnamediv>
787     <refsect1>
788       <title>Syntax</title>
789       <synopsis>
790       <function>(update-slot-from-record object slot &amp;key (database *default-database*))</function> => <returnvalue><!-- result --></returnvalue></synopsis>
791     </refsect1>
792     <refsect1>
793       <title>Arguments and Values</title>
794       <variablelist>
795         <varlistentry>
796           <term><parameter>object</parameter></term>
797           <listitem>
798             <para>
799               An instance of a view class.
800             </para>
801           </listitem>
802         </varlistentry>
803         <varlistentry>
804           <term><parameter>slot</parameter></term>
805           <listitem>
806             <para>
807               The name of a slot in <parameter>object</parameter>.
808             </para>
809           </listitem>
810         </varlistentry>
811         <varlistentry>
812           <term><parameter>database</parameter></term>
813           <listitem>
814             <para>
815               A database connection.
816             </para>
817           </listitem>
818         </varlistentry>
819       </variablelist>
820     </refsect1>
821     <refsect1>
822       <title>Description</title>
823       <para>Updates the slot value, specified by the CLOS slot name
824       <parameter>slot</parameter>, of the View Class instance
825       <parameter>object</parameter> using the attribute values of the
826       appropriate table of <parameter>database</parameter> which
827       defaults to the database associated with
828       <parameter>object</parameter> or, if
829       <parameter>object</parameter> is not associated with a database,
830       <varname>*default-database*</varname>.  Join slots are updated
831       but instances of the class on which the join is made are not
832       updated.
833       </para>
834     </refsect1>
835     <refsect1>
836       <title>Examples</title>
837       <screen>
838         <!-- examples -->
839       </screen>
840     </refsect1>
841     <refsect1>
842       <title>Side Effects</title>
843       <para>
844         Modifies the slot value of the object.
845       </para>
846     </refsect1>
847     <refsect1>
848       <title>Affected by</title>
849       <para>
850         <simplelist>
851           <member>Data in SQL database.</member>
852         </simplelist>
853       </para>
854     </refsect1>
855     <refsect1>
856       <title>Exceptional Situations</title>
857       <para>
858         Database errors.
859       </para>
860     </refsect1>
861     <refsect1>
862       <title>See Also</title>
863       <para>
864       </para>
865     </refsect1>
866     <refsect1>
867       <title>Notes</title>
868       <para>
869         <!-- notes --> 
870       </para>
871     </refsect1>
872   </refentry> 
873
874 </reference>