使用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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值