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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
<?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_sql_transact">
<refmeta>
<refentrytitle>sql_transact</refentrytitle>
<refmiscinfo>rmt</refmiscinfo>
</refmeta>
<refnamediv>
<refname>sql_transact</refname>
<refpurpose>get list of available DSNs</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis id="fsyn_sql_transact">
<funcprototype id="fproto_sql_transact">
<funcdef><function>sql_transact</function></funcdef>
<paramdef>in <parameter>dsn_name</parameter> varchar</paramdef>
<paramdef><optional>in <parameter>rollback</parameter> integer</optional></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="desc_sql_transact">
<title>Description</title>
<para>This procedure can be used to control the commit/rollback behavior
of a particular remote data source during a Virtuoso transaction such as in
a stored procedure.</para>
<para>Under normal circumstances Virtuoso will correctly commit or
rollback all associated work as expected, however it may be desirable
intervene. When issued without the second parameter a commit will be
forced upon the current transactions of the dsn_name above
the call to <computeroutput>sql_transact</computeroutput> regardless
of overall outcome. When rollback = 1 is set then a rollback will be forced
likewise, hence this will not rollback work on the remote dsn_name prior
to <computeroutput>sql_transact</computeroutput>.</para>
</refsect1>
<refsect1 id="params_sql_transact">
<title>Parameters</title>
<refsect2><title>dsn_name</title>
<para>The name of the data source being used on the remote.</para></refsect2>
<refsect2><title>rollback</title>
<para>Activate the desired behavior. Set to 1 for rollback, ignore to commit.</para></refsect2>
</refsect1>
<refsect1 id="ret_sql_transact"><title>Return Types</title>
<para>None.</para>
</refsect1>
<!-- <refsect1 id="errors_sql_transact">
<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_sql_transact">
<title>Examples</title>
<example id="ex_sql_transact"><title>Control remote rollback/commit behavior</title>
<para>This code fragment can be used to demonstrate the effects of directly
controlling the rollback/commit behavior of remote data sources connected
to Virtuoso.</para>
<programlisting><![CDATA[
create procedure TEST_ROLLBACK ()
{
commit work;
insert into mydsn..rb_test values (1);
sql_transact('mydsn');
insert into mydsn..rb_test values (2);
rollback work;
};
create procedure TEST_ROLLBACK ()
{
commit work;
insert into mydsn..rb_test values (1);
sql_transact('mydsn', 1);
insert into mydsn..rb_test values (2);
commit work;
};
delete from mydsn..rb_test;
commit work;
TEST_COMMIT();
select MIN (ID) from mydsn..rb_test;
-- returns 1
delete from mydsn..rb_test;
commit work;
TEST_ROLLBACK();
select MIN (ID) from mydsn..rb_test;
-- returns 2
]]></programlisting>
</example>
</refsect1>
<refsect1 id="seealso_sql_transact">
<title>See Also</title>
<para><link linkend="fn_sql_columns"><function>sql_columns</function></link>
<link linkend="fn_sql_primary_keys"><function>sql_primary_keys</function></link>,
<link linkend="fn_sql_gettypeinfo"><function>sql_gettypeinfo</function></link>,
<link linkend="fn_sql_statistics"><function>sql_statistics</function></link>,
<link linkend="fn_sql_tables"><function>sql_tables</function></link>.</para>
</refsect1>
</refentry>
|