【问题标题】:Stored Procedures with JSTL's <sql:query> tag带有 JSTL 的 <sql:query> 标记的存储过程
【发布时间】:2013-05-28 14:42:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: mysql sql jsp jstl


    【解决方案1】:

    将 select 语句放在 JSTL 查询中可能同样容易,在没有存储过程的情况下为您提供所需的结果,除非您出于某种原因需要使用存储过程。这似乎很简单。关键是确保您在查询中使用 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>
    

    【讨论】:

    • 谢谢! AS count 正是我所需要的。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多