我在学校学到了可以使用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
)获取有限数量的记录,并且想要计算数据库中有多少条记录,而不必将它们全部读取并保存在变量中。
答案 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>