package com.lizard.fastdb.dialect; /** * ORACLE 关系型数据库特定的 SQL 方言 * * @author SHEN.GANG */ public class OracleDialect extends Dialect { public OracleDialect(){ } public String getLimitSQL( String sql, int offset, int limit ) { sql = sql.trim(); StringBuffer sb = new StringBuffer( sql.length()+100 ); if ( offset > 0 ) { sb.append("select * from ( select row_.*, rownum rownum_ from ( "); } else { sb.append("select * from ( "); } sb.append( sql ); if ( offset > 0 ) { sb.append(" ) row_ ) where rownum_ <= "+(offset+limit)+" and rownum_ > "+offset); // sb.append(" ) row_ where rownum <= ?) where rownum_ > ?"); } else { sb.append(" ) where rownum <= "+(offset+limit)); } return sb.toString(); } @Override public String getGeneratedKeySQL(Object... params) { if( params == null || params.length == 0 || "".equals( params[0].toString().trim()) ) { throw new IllegalArgumentException("Can't not found the Oracle Sequence Name to [ SELECT .CURRVAL ]!"); } // params[0] 为 当前操作 Sequence name return "SELECT "+ params[0] +".CURRVAL FROM dual"; } @Override public String getTestSQL() { return "SELECT 1 FROM dual"; } }