File: rstmtexec.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 (117 lines) | stat: -rw-r--r-- 5,484 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
<?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_rstmtexec">
  <refmeta>
    <refentrytitle>rstmtexec</refentrytitle>
    <refmiscinfo>rmt</refmiscinfo>
  </refmeta>
  <refnamediv>
    <refname>rstmtexec</refname>
    <refpurpose>execute a SQL statement on a remote DSN, provides a result set where applicable.</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <funcsynopsis id="fsyn_rstmtexec">
      <funcprototype id="fproto_rstmtexec">
        <funcdef><function>rstmtexec</function></funcdef>
        <paramdef>in <parameter>dsn</parameter> varchar</paramdef>
        <paramdef>in <parameter>stmt</parameter> varchar</paramdef>
        <paramdef><optional>in <parameter>max_rows</parameter> integer</optional></paramdef>
        <paramdef><optional>in <parameter>params_array</parameter> vector</optional></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>
  <refsect1 id="desc_rstmtexec"><title>Description</title>
    <para>This function can be used to execute SQL on a remote data source
    directly.  It returns a result set where one is expected.  </para>
	<para>This function is wrapper for the <function>rexecute()</function> 
	provided for convenience as a shortcut.</para>
	<para>Unless explicitly granted, only the DBA group is permitted to use the 
	<function>rstmtexec()</function> to maintain security.  Caution is required 
	here since any user granted use of <function>rstmtexec()</function> has 
	full control of the remote data source set-up by the DBA, albeit limited 
	to the overall abilities of the remote user on the remote data source.  
	Users can be granted and denied access to this function using the following 
	commands:</para>

<programlisting><![CDATA[
GRANT REXECUTE ON '<attached_dsn_name>' TO <user_name>
REVOKE REXECUTE ON '<attached_dsn_name>' FROM <user_name>
]]></programlisting>

  <para>This command directly affects the grant to the <function>rexecute()</function>
  function, which is the underlying mechanism for providing this function.</para>

  </refsect1>
  <refsect1 id="params_rstmtexec"><title>Parameters</title>
    <refsect2><title>dsn</title>
      <para>The data source where the SQL statement should be executed.
      You must make sure that you have already defined the data source
      using the <function><link linkend="fn_vd_remote_data_source">
      vd_remote_data_source</link></function> function or by attaching tables from it.</para>
    </refsect2>
    <refsect2><title>stmt</title>
      <para>the SQL statement to execute on the remote data source <parameter>dsn</parameter>.</para>
    </refsect2>
    <refsect2><title>max_rows</title>
      <para>This controls the number of rows to be returned as follows:</para>
	  <simplelist>
	   <member>negative - return no rows</member>
	   <member>zero (0) - all rows (default)</member>
	   <member>positive - specified number of rows</member>
	  </simplelist>
    </refsect2>
    <refsect2><title>in_params</title>
      <para>A <type>vector</type> of parameters to the statement if the
      executed statement has parameters.  IN input parameters are specified
      as literals whereas OUT and INOUT parameters are specified as vectors
      of 3 elements for OUT and 4 elements for INOUT as follows:</para>
      <simplelist>
        <member>[0] - the type of the parameter ('OUT' or 'INOUT')</member>
        <member>[1] - the datatype that the parameter is bound to on the remote</member>
        <member>[2] - the buffer length for the output parameter</member>
        <member>[3] - (INOUT only) the input value of the parameter</member>
      </simplelist>
      <para>Non-vector parameters in the in_params parameter of rstmtexec are
      considered IN parameters, so the rstmtexec remains backwards compatible.</para>
    </refsect2>
  </refsect1>
  <refsect1 id="ret_rstmtexec"><title>Return Values</title>
    <para>This function returns a result set.</para>
  </refsect1>
  <!-- refsect1 id="examples_rstmtexec">
    <title>Examples</title>
    <example id="ex_rstmtexec_1"><title>Remote execute example 1</title>
      <para>Remote execute, retrieving the whole result from remote at once.</para>
      <screen><![CDATA[
]]></screen>
    </example>
  </refsect1 -->
  <refsect1 id="seealso_rexecute"><title>See Also</title>
    <para><link linkend="fn_rexecute"><function>rexecute()</function></link>,
	<link linkend="fn_rnext"><function>rnext()</function></link>,
    <link linkend="fn_rmoreresults"><function>rmoreresults()</function></link>,
    <link linkend="fn_rclose"><function>rclose()</function></link></para>
  </refsect1>
</refentry>