File: xml_auto.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-- 5,421 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_xml_auto">
  <refmeta>
    <refentrytitle>xml_auto</refentrytitle>
    <refmiscinfo>xml</refmiscinfo>
  </refmeta>
  <refnamediv>
    <refname>xml_auto</refname>
    <refpurpose>prepares and executes given SQL for XML string output</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <funcsynopsis id="fsyn_xml_auto">
      <funcprototype id="fproto_xml_auto">
        <funcdef><function>xml_auto</function></funcdef>
        <paramdef>in <parameter>sql_text </parameter>varchar</paramdef>
        <paramdef>in <parameter>params </parameter>any</paramdef>
        <paramdef><optional>in <parameter>string_output </parameter>any</optional></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>
  <refsect1 id="desc_xml_auto"><title>Description</title>
	<para>
This function prepares and executes the given SQL string, which should be a query expression with
the FOR XML clause at the end of the last term.  The query
is passed the parameters from the params vector, which should have one element for
each ? in the query text, values assigned from left to right.  Consider the
query: select a, b from table where a = ? and b = ?; then the params vector
could reasonably be: <screen>vector(1, 'myfilter')</screen>.
</para>
	<para>
The result set is converted to XML and appended to the <parameter>string</parameter>_output.
If the <parameter>string</parameter>_output is omitted and the function executes in the context
of a VSP page, the output is sent to the stream going to the user agent.
</para>
  </refsect1>
  <refsect1 id="params_xml_auto"><title>Parameters</title>
    <refsect2><title>sql_text</title>
      <para>Valid SQL query using the FOR XML clause.  Parameterized
queries can be constructed using the question mark (?) to specify a
parameter place-holder that will be replaced at run time with the appropriate
      value from the <parameter>params</parameter> vector.</para></refsect2>
    <refsect2><title>params</title>
      <para>Vector of parameters, one element per ? used in the query.</para></refsect2>
    <refsect2><title>string_output</title>
      <para>String variable or stream for receiving the result.</para></refsect2>
  </refsect1>
  <refsect1 id="ret_xml_auto"><title>Return Types</title><para>If you omit the third parameter,
  this function will output to the context of the calling VSP page.</para></refsect1>
  <refsect1 id="errors_xml_auto"><title>Errors</title>
    <table><title>Errors signalled by <function>xml_auto</function></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>42000</errorcode></entry>
	    <entry><errorcode></errorcode></entry>
	    <entry><errorname>http output function outside of http context and no stream specified</errorname></entry>
	    <entry>From an attempt to send the output directly to a non HTTP target such as ISQL.</entry>
	  </row>
	  <row>
	    <entry><errorcode>42000</errorcode></entry>
	    <entry><errorcode></errorcode></entry>
	    <entry><errorname>Column 1 of the result set of the select statement should be of INTEGER type when FOR XML EXPLICIT clause is used</errorname></entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry><errorcode>42000</errorcode></entry>
	    <entry><errorcode></errorcode></entry>
	    <entry><errorname>Column 2 of the result set of the select statement should be of INTEGER type when FOR XML EXPLICIT clause is used</errorname></entry>
	    <entry></entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>
  <refsect1 id="examples_xml_auto"><title>Examples</title>
    <example id="ex_xml_auto"><title>Producing XML from SQL</title>
<para>
The procedure below takes an SQL string, evaluates it &mdash; converting
to XML &mdash; and
produces a result set where the XML text is returned as a varchar column.
Parameters are not passed in this example for the sake of simplicity.
</para>

<programlisting>
create procedure xmla (in q varchar)
{
  declare st any;
  st := string_output ();
  xml_auto (q, vector (), st);
  result_names (q);
  result (string_output_string (st));
}
</programlisting>    </example>
  </refsect1>
  <refsect1 id="seealso_xml_auto"><title>See Also</title>
    <para><link linkend="fn_xml_auto_schema"><function>xml_auto_schema()</function></link>,<link linkend="fn_xml_auto_dtd"><function>xml_auto_dtd()</function></link></para>
  </refsect1>
</refentry>