使用JSTL的<sql:query>标记</sql:query>存储过程

时间:2013-05-28 14:42:25

标签: mysql sql jsp jstl

我在学校学到了可以使用JSP和JSTL-SQL标记库对MySQL数据库执行查询。
为此,我写道:
    <sql:query var="results" dataSource="${datasource}"> SELECT * FROM table WHERE name='xy' </sql:query>

现在我必须在MySQL InnoDB数据库上执行存储过程(COUNT(*)SUM(datafield),...)。

有没有办法做到这一点,并用sql标签读取结果?

BTW:我知道我可以使用${results.rowCount}来读取query-command返回的数据/记录数。但我总是使用一个查询命令(LIMIT a, n)获取有限数量的记录,并且想要计算数据库中有多少条记录,而不必将它们全部读取并保存在变量中。

1 个答案:

答案 0 :(得分:1)

将select语句放在JSTL查询中可能同样容易,无需存储过程就可以获得所需的结果,除非您出于某种原因需要使用sproc。这看起来非常简单。关键是要确保在查询中使用AS赋值,以便引用要使用JSTL的值。

<sql:query var="results" dataSource="${datasource}">
    SELECT COUNT(field) AS count, SUM(otherField) AS sum FROM table WHERE name='xy'
</sql:query>

<c:forEach items="${results.rows}" var="result">
    ${result.count} : ${result.sum}
</c:forEach>