2011-02-15 28 views
4

在MySQL IM具有其具有像SQL的存儲過程JSTL SQL奇怪的行爲 -用jsp如MySQL的

<sql:query var="comm_codes" dataSource="jdbc/myDatasource"> 
    call sp_select_username(?); 
    <sql:param>${user_id}</sql:param> 
</sql:query> 

<c:forEach var="rows" items="${comm_codes.rows}"> 
    ${rows.i_firstname} ${rows.i_lastname} 
</c:forEach> 

但是,此代碼不會返回任何內容,但在替換上述代碼時$ {rows.i_firstname}$ {rows.firstname}我得到正確的值。

任何問題JSTL,這是複製或在這裏我的錯......

問題還張貼herehere

感謝

+0

當你這樣做會發生什麼? ` ` – CoolBeans 2011-02-15 02:13:12

回答

4

我知道這是一個古老的職位,但我遇到了這個問題也是如此。在此討論:http://forums.mysql.com/read.php?39,432843,432862#msg-432862

重要的是,在MySQL的論壇上發帖稱

ResultSetMetaData.getColumnName()將返回列的實際名稱,如果存在

這提供了一種解決方法 - 防止存在列名,以便必須使用別名。作爲一個例子,原來的海報的存儲過程可以被修改爲

select concat(first name,'') as i_firstname , 
     concat(lastname,'') as i_lastname from roleuser 
where user_id = uid ; 

在這種情況下,原來的列現在未知的,並且用於該別名。我已經在我的系統上測試過這種情況,它在類似的情況下工作。同樣,如果您需要爲int使用別名,則可以嘗試SELECT(id + 0)AS id_alias。我相信大多數列類型都有類似的解決方案。希望這可以幫助。