使用DB2数据库,排序错误


1、在分页操作中我们需要select count(*) from ttable order by createtime,在db2中会报如下异常:

Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException:
DB2 SQL Error: SQLCODE=-119, SQLSTATE=42803, SQLERRMC=CREATETIME, DRIVER=3.62.56

通过SQLCODE我们得到如下信息:

说明:

SELECT 语句有下列其中一种错误:
* 标识的表达式和列函数包含在 SELECT 子句、HAVING 子句或 ORDER BY 子句
中,但无 GROUP BY 子句
* 标识的表达式包含在 SELECT 子句、HAVING 子句或 ORDER BY 子句中,但不在
GROUP BY 子句中。

标识的表达式是以 "<表达式开头>" 开始的表达式。表达式可以是单个列名。

我们可以查看sqlcode大全(http://wenku.baidu.com/view/cba43d35eefdc8d376ee3284.html
或者在db2的控制台输入如下命令:db2 ? sql-119


2、如果查询语句中包括order by 例如:
select * from tuser order by username desc;

如果我们的系统临时表空间初始页大小比较小,那么当执行该查询时将导致无法找到定义的tuser对象错误。
异常如下:
com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -1585, SQLSTATE: 54048, SQLERRMC: null
通过查询错误码知道:
不存在具有足夠頁大小的系統臨時表空間。
說明:
可能發生了下列其中一種情況:

系統臨時表的行長度超過了數據庫中最大系統臨時表空間中可接受的限制。
系統臨時表中所需的列數超過了數據庫中最大系統臨時表空間中可接受的限制。
系統臨時表空間限制取決於其頁大小。
详细信息参见:
http://www.lslnet.com/linux/f/docs1/i51/big5344887.htm

你可能感兴趣的:(db2)