blob: ceb04e48467769bbe9d1c1ad2e0c9154c95d61ee [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- CVS: $Id: esql.xsp,v 1.3 2003/04/17 20:47:30 haul Exp $ -->
<xsp:page language="java"
xmlns:xsp="http://apache.org/xsp"
xmlns:esql="http://apache.org/cocoon/SQL/v2">
<page>
<title>A Database Driven XSP Page</title>
<resources>
<resource type="file" href="../transform/sql-page.xml.sql">Schema</resource>
<resource type="doc" href="userdocs/xsp/esql">ESQL</resource>
</resources>
<content>
<esql:connection>
<esql:pool>personnel</esql:pool>
<para>
Below you see all guys from the departments
</para>
<esql:execute-query>
<esql:query>select * from employee</esql:query>
<esql:results>
<esql:row-results>
<para><esql:get-string column="name"/></para>
<!-- uncomment if you want columns to become tags -->
<!-- <esql:get-columns/> -->
</esql:row-results>
</esql:results>
</esql:execute-query>
<hr/>
<para>
Below you see just some of the guys
</para>
<esql:execute-query>
<esql:query>select * from employee</esql:query>
<esql:use-limit-clause>jdbc</esql:use-limit-clause>
<esql:skip-rows>1</esql:skip-rows>
<esql:max-rows>2</esql:max-rows>
<esql:results>
<esql:row-results>
<para><esql:get-string column="name"/></para>
</esql:row-results>
<esql:previous-results>
We skipped some.
</esql:previous-results>
<esql:more-results>
There are some more.
</esql:more-results>
<para>
There is a total of <esql:row-count/> employees.
</para>
</esql:results>
</esql:execute-query>
<hr/>
<para>
Below departments and employees are printed.
Without the grouping feature, the result would look like this:
</para>
<esql:execute-query>
<esql:query>
SELECT department.name, employee.id, employee.name as empName FROM department, employee
WHERE department.id = employee.department_id ORDER BY department.name
</esql:query>
<esql:results>
<esql:row-results>
<Department>
<xsp:attribute name='name'><esql:get-string column='name'/></xsp:attribute>
<h2><esql:get-string column='name'/></h2>
<para><employee><esql:get-string column='empName'/></employee></para>
</Department>
</esql:row-results>
</esql:results>
</esql:execute-query>
<hr/>
<para>
This uses the grouping feature in esql.
</para>
<esql:execute-query>
<esql:query>
SELECT department.name, employee.id, employee.name as empName FROM department, employee
WHERE department.id = employee.department_id ORDER BY department.name
</esql:query>
<esql:results>
<esql:row-results>
<esql:group group-on='name'><!-- grouping -->
<Department>
<xsp:attribute name='name'><esql:get-string column='name'/></xsp:attribute>
<h2><esql:get-string column='name'/></h2>
<esql:member><!-- grouping -->
<para><employee><esql:get-string column='empName'/></employee></para>
</esql:member><!--grouping -->
</Department>
</esql:group><!-- grouping -->
</esql:row-results>
</esql:results>
</esql:execute-query>
<hr/>
<para>
This uses nested queries.
</para>
<esql:execute-query>
<esql:query>
SELECT name, id FROM department ORDER BY name
</esql:query>
<esql:results>
<esql:row-results>
<Department>
<xsp:attribute name='name'><esql:get-string column='name'/></xsp:attribute>
<h2><esql:get-string column='name'/></h2>
<esql:execute-query>
<esql:query>
select name from employee
where department_id = <esql:parameter type="int"><esql:get-int column="id" ancestor="1"/></esql:parameter>
</esql:query>
<esql:results>
<esql:row-results>
<para><employee><esql:get-string column='name'/></employee></para>
</esql:row-results>
</esql:results>
</esql:execute-query>
</Department>
</esql:row-results>
</esql:results>
</esql:execute-query>
</esql:connection>
</content>
</page>
</xsp:page>