File: set_row_count.xml

package info (click to toggle)
virtuoso-opensource 7.2.5.1%2Bdfsg1-0.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 285,240 kB
  • sloc: ansic: 641,220; sql: 490,413; xml: 269,570; java: 83,893; javascript: 79,900; cpp: 36,927; sh: 31,653; cs: 25,702; php: 12,690; yacc: 10,227; lex: 7,601; makefile: 7,129; jsp: 4,523; awk: 1,697; perl: 1,013; ruby: 1,003; python: 326
file content (123 lines) | stat: -rw-r--r-- 4,600 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 -  
 -  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 -  project.
 -  
 -  Copyright (C) 1998-2018 OpenLink Software
 -  
 -  This project is free software; you can redistribute it and/or modify it
 -  under the terms of the GNU General Public License as published by the
 -  Free Software Foundation; only version 2 of the License, dated June 1991.
 -  
 -  This program is distributed in the hope that it will be useful, but
 -  WITHOUT ANY WARRANTY; without even the implied warranty of
 -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 -  General Public License for more details.
 -  
 -  You should have received a copy of the GNU General Public License along
 -  with this program; if not, write to the Free Software Foundation, Inc.,
 -  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 -  
 -  
-->
<refentry id="fn_set_row_count">
  <refmeta>
    <refentrytitle>set_row_count</refentrytitle>
    <refmiscinfo>sql</refmiscinfo>
  </refmeta>
  <refnamediv>
    <refname>set_row_count</refname>
    <refpurpose>sets the affected rows counter in the current context or in the context of the caller</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <funcsynopsis id="fsyn_set_row_count">
      <funcprototype id="fproto_set_row_count">
        <funcdef>integer <function>set_row_count</function></funcdef>
	<paramdef>in <parameter>increment</parameter> integer</paramdef>
	<paramdef><optional>in <parameter>what</parameter> integer</optional></paramdef>
      </funcprototype>
    </funcsynopsis>
</refsynopsisdiv>

  <refsect1 id="desc_set_row_count"><title>Description</title>
      <para>The function set_row_count () is used to set the affected rows 
	  counter in the current context or in the context of the caller. 
	  Therefore it can be used to set the affected rows counter (returned by <function>row_count()</function>) 
	  in places where an instead of trigger is used.
	  If result of decrement of the affected rows counter is an negative integer it will be set to zero. 
      </para>
  </refsect1>
  
  <refsect1 id="params_set_row_count"><title>Parameters</title>
    <refsect2><title>increment</title>
	<para>An integer to be added to the affected rors counter, can be negative also</para>
    </refsect2>
    <refsect2><title>what</title>
	<para>The what  have to be 0 or 1, 0 is the default. 0 - for update in current context the counter,
	1 - to update the counter in context of the caller.</para>
    </refsect2>
  </refsect1>
  <refsect1 id="ret_set_row_count"><title>Return Types</title><para>
	  The function returns new value of the affected rows , or -1 if action is not applicable.
</para></refsect1>

  <!--refsect1 id="errors_set_row_count"><title>Errors</title>
    <table><title>Errors signalled by</title>
      <tgroup cols="4">
       <thead><row><entry>SQLState</entry><entry>Error Code</entry><entry>Error Text</entry><entry>Description</entry></row></thead>
	<tbody>
	  <row>
	    <entry><errorcode></errorcode></entry>
	    <entry><errorcode></errorcode></entry>
	    <entry><errorname></errorname></entry>
	    <entry></entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1-->
  <refsect1 id="examples_set_row_count"><title>Examples</title>
      <example id="ex_set_row_count"><title>Setting the affected rows counter in instead of trigger</title>
	  <para>The following SQL script will make two instead of triggers on atable "hid"
	      and inside them will are called set_row_count to set the rows inserted or updated 
	      in the second table. Also there are two procedures which are used to demonstrate the 
	      return value of row_count.</para>
      <programlisting><![CDATA[
	  create table hid (id integer primary key, dt varchar);
	  create table sho (id1 integer primary key, dt1 varchar);

	  create trigger i_hid instead of insert on hid  
	  {
	    insert into sho values (id, dt);
	    set_row_count (row_count(), 1);
	  };

	  create trigger u_hid instead of update on hid 
	  {
	    update sho set dt1 = dt where id1 = id;
	    set_row_count (row_count(), 1);
	  };


	  create procedure test_ins ()
	  {
	    insert into hid select * from chid;
	    return row_count();
	  };

	  create procedure test_upd ()
	  {
	    update hid set dt = '';
	    return row_count ();
	  };
	  
	  ]]></programlisting>
    </example>
  </refsect1>
  <refsect1 id="seealso_set_row_count"><title>See Also</title>
    <para>
	<link linkend="fn_row_count"><function>row_count()</function></link>
    </para>
  </refsect1>
</refentry>