亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? db2dialect.java

?? hibernate-3.1.3-all-src.zip 面向?qū)ο蟮脑L問數(shù)據(jù)庫工具
?? JAVA
字號:
//$Id: DB2Dialect.java 8782 2005-12-08 02:41:15Z oneovthafew $
package org.hibernate.dialect;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.cfg.Environment;
import org.hibernate.dialect.function.NoArgSQLFunction;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.VarArgsSQLFunction;

/**
 * An SQL dialect for DB2.
 * @author Gavin King
 */
public class DB2Dialect extends Dialect {

	public DB2Dialect() {
		super();
		registerColumnType( Types.BIT, "smallint" );
		registerColumnType( Types.BIGINT, "bigint" );
		registerColumnType( Types.SMALLINT, "smallint" );
		registerColumnType( Types.TINYINT, "smallint" );
		registerColumnType( Types.INTEGER, "integer" );
		registerColumnType( Types.CHAR, "char(1)" );
		registerColumnType( Types.VARCHAR, "varchar($l)" );
		registerColumnType( Types.FLOAT, "float" );
		registerColumnType( Types.DOUBLE, "double" );
		registerColumnType( Types.DATE, "date" );
		registerColumnType( Types.TIME, "time" );
		registerColumnType( Types.TIMESTAMP, "timestamp" );
		registerColumnType( Types.VARBINARY, "varchar($l) for bit data" );
		registerColumnType( Types.NUMERIC, "numeric($p,$s)" );
		registerColumnType( Types.BLOB, "blob($l)" );
		registerColumnType( Types.CLOB, "clob($l)" );

		registerFunction("abs", new StandardSQLFunction("abs") );
		registerFunction("absval", new StandardSQLFunction("absval") );
		registerFunction("sign", new StandardSQLFunction("sign", Hibernate.INTEGER) );

		registerFunction("ceiling", new StandardSQLFunction("ceiling") );
		registerFunction("ceil", new StandardSQLFunction("ceil") );
		registerFunction("floor", new StandardSQLFunction("floor") );
		registerFunction("round", new StandardSQLFunction("round") );

		registerFunction("acos", new StandardSQLFunction("acos", Hibernate.DOUBLE) );
		registerFunction("asin", new StandardSQLFunction("asin", Hibernate.DOUBLE) );
		registerFunction("atan", new StandardSQLFunction("atan", Hibernate.DOUBLE) );
		registerFunction("cos", new StandardSQLFunction("cos", Hibernate.DOUBLE) );
		registerFunction("cot", new StandardSQLFunction("cot", Hibernate.DOUBLE) );
		registerFunction("degrees", new StandardSQLFunction("degrees", Hibernate.DOUBLE) );
		registerFunction("exp", new StandardSQLFunction("exp", Hibernate.DOUBLE) );
		registerFunction("float", new StandardSQLFunction("float", Hibernate.DOUBLE) );
		registerFunction("hex", new StandardSQLFunction("hex", Hibernate.STRING) );
		registerFunction("ln", new StandardSQLFunction("ln", Hibernate.DOUBLE) );
		registerFunction("log", new StandardSQLFunction("log", Hibernate.DOUBLE) );
		registerFunction("log10", new StandardSQLFunction("log10", Hibernate.DOUBLE) );
		registerFunction("radians", new StandardSQLFunction("radians", Hibernate.DOUBLE) );
		registerFunction("rand", new NoArgSQLFunction("rand", Hibernate.DOUBLE) );
		registerFunction("sin", new StandardSQLFunction("sin", Hibernate.DOUBLE) );
		registerFunction("soundex", new StandardSQLFunction("soundex", Hibernate.STRING) );
		registerFunction("sqrt", new StandardSQLFunction("sqrt", Hibernate.DOUBLE) );
		registerFunction("stddev", new StandardSQLFunction("stddev", Hibernate.DOUBLE) );
		registerFunction("tan", new StandardSQLFunction("tan", Hibernate.DOUBLE) );
		registerFunction("variance", new StandardSQLFunction("variance", Hibernate.DOUBLE) );

		registerFunction("julian_day", new StandardSQLFunction("julian_day", Hibernate.INTEGER) );
		registerFunction("microsecond", new StandardSQLFunction("microsecond", Hibernate.INTEGER) );
		registerFunction("midnight_seconds", new StandardSQLFunction("midnight_seconds", Hibernate.INTEGER) );
		registerFunction("minute", new StandardSQLFunction("minute", Hibernate.INTEGER) );
		registerFunction("month", new StandardSQLFunction("month", Hibernate.INTEGER) );
		registerFunction("monthname", new StandardSQLFunction("monthname", Hibernate.STRING) );
		registerFunction("quarter", new StandardSQLFunction("quarter", Hibernate.INTEGER) );
		registerFunction("hour", new StandardSQLFunction("hour", Hibernate.INTEGER) );
		registerFunction("second", new StandardSQLFunction("second", Hibernate.INTEGER) );
		registerFunction("current_date", new NoArgSQLFunction("current date", Hibernate.DATE, false) );
		registerFunction("date", new StandardSQLFunction("date", Hibernate.DATE) );
		registerFunction("day", new StandardSQLFunction("day", Hibernate.INTEGER) );
		registerFunction("dayname", new StandardSQLFunction("dayname", Hibernate.STRING) );
		registerFunction("dayofweek", new StandardSQLFunction("dayofweek", Hibernate.INTEGER) );
		registerFunction("dayofweek_iso", new StandardSQLFunction("dayofweek_iso", Hibernate.INTEGER) );
		registerFunction("dayofyear", new StandardSQLFunction("dayofyear", Hibernate.INTEGER) );
		registerFunction("days", new StandardSQLFunction("days", Hibernate.LONG) );
		registerFunction("current_time", new NoArgSQLFunction("current time", Hibernate.TIME, false) );
		registerFunction("time", new StandardSQLFunction("time", Hibernate.TIME) );
		registerFunction("current_timestamp", new NoArgSQLFunction("current timestamp", Hibernate.TIMESTAMP, false) );
		registerFunction("timestamp", new StandardSQLFunction("timestamp", Hibernate.TIMESTAMP) );
		registerFunction("timestamp_iso", new StandardSQLFunction("timestamp_iso", Hibernate.TIMESTAMP) );
		registerFunction("week", new StandardSQLFunction("week", Hibernate.INTEGER) );
		registerFunction("week_iso", new StandardSQLFunction("week_iso", Hibernate.INTEGER) );
		registerFunction("year", new StandardSQLFunction("year", Hibernate.INTEGER) );

		registerFunction("double", new StandardSQLFunction("double", Hibernate.DOUBLE) );
		registerFunction("varchar", new StandardSQLFunction("varchar", Hibernate.STRING) );
		registerFunction("real", new StandardSQLFunction("real", Hibernate.FLOAT) );
		registerFunction("bigint", new StandardSQLFunction("bigint", Hibernate.LONG) );
		registerFunction("char", new StandardSQLFunction("char", Hibernate.CHARACTER) );
		registerFunction("integer", new StandardSQLFunction("integer", Hibernate.INTEGER) );
		registerFunction("smallint", new StandardSQLFunction("smallint", Hibernate.SHORT) );

		registerFunction("digits", new StandardSQLFunction("digits", Hibernate.STRING) );
		registerFunction("chr", new StandardSQLFunction("chr", Hibernate.CHARACTER) );
		registerFunction("upper", new StandardSQLFunction("upper") );
		registerFunction("lower", new StandardSQLFunction("lower") );
		registerFunction("ucase", new StandardSQLFunction("ucase") );
		registerFunction("lcase", new StandardSQLFunction("lcase") );
		registerFunction("length", new StandardSQLFunction("length", Hibernate.LONG) );
		registerFunction("ltrim", new StandardSQLFunction("ltrim") );
		registerFunction("rtrim", new StandardSQLFunction("rtrim") );
		registerFunction( "substr", new StandardSQLFunction( "substr", Hibernate.STRING ) );
		registerFunction( "posstr", new StandardSQLFunction( "posstr", Hibernate.INTEGER ) );

		registerFunction( "substring", new StandardSQLFunction( "substr", Hibernate.STRING ) );
		registerFunction( "trim", new SQLFunctionTemplate( Hibernate.INTEGER, "ltrim(rtrim(?1))" ) );
		registerFunction( "bit_length", new SQLFunctionTemplate( Hibernate.INTEGER, "length(?1)*8" ) );
		
		registerFunction( "concat", new VarArgsSQLFunction(Hibernate.STRING, "", "||", "") );

		registerFunction( "str", new SQLFunctionTemplate( Hibernate.STRING, "rtrim(char(?1))" ) );

		registerKeyword("current");
		registerKeyword("date");
		registerKeyword("time");
		registerKeyword("timestamp");
		registerKeyword("fetch");
		registerKeyword("first");
		registerKeyword("rows");
		registerKeyword("only");
		
		getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH);
	}

	public String getLowercaseFunction() {
		return "lcase";
	}
	
	public String getAddColumnString() {
		return "add column";
	}
	public boolean dropConstraints() {
		return false;
	}
	public boolean supportsIdentityColumns() {
		return true;
	}
	public String getIdentitySelectString() {
		return "values identity_val_local()";
	}
	public String getIdentityColumnString() {
		return "generated by default as identity"; //not null ... (start with 1) is implicit
	}
	public String getIdentityInsertString() {
		return "default";
	}

	public String getSequenceNextValString(String sequenceName) {
		return "values nextval for " + sequenceName;
	}
	public String getCreateSequenceString(String sequenceName) {
		return "create sequence " + sequenceName;
	}
	public String getDropSequenceString(String sequenceName) {
		return "drop sequence " + sequenceName + " restrict";
	}

	public boolean supportsSequences() {
		return true;
	}

	public String getQuerySequencesString() {
		return "select seqname from sysibm.syssequences";
	}

	public boolean supportsLimit() {
		return true;
	}

	/*public String getLimitString(String sql, boolean hasOffset) {
		StringBuffer rownumber = new StringBuffer(50)
			.append(" rownumber() over(");
		int orderByIndex = sql.toLowerCase().indexOf("order by");
		if (orderByIndex>0) rownumber.append( sql.substring(orderByIndex) );
		rownumber.append(") as row_,");
		StringBuffer pagingSelect = new StringBuffer( sql.length()+100 )
			.append("select * from ( ")
			.append(sql)
			.insert( getAfterSelectInsertPoint(sql)+16, rownumber.toString() )
			.append(" ) as temp_ where row_ ");
		if (hasOffset) {
			pagingSelect.append("between ?+1 and ?");
		}
		else {
			pagingSelect.append("<= ?");
		}
		return pagingSelect.toString();
	}*/
	
	/**
	 * Render the <tt>rownumber() over ( .... ) as rownumber_,</tt> 
	 * bit, that goes in the select list
	 */
	private String getRowNumber(String sql) {
		StringBuffer rownumber = new StringBuffer(50)
			.append("rownumber() over(");

		int orderByIndex = sql.toLowerCase().indexOf("order by");
		
		if ( orderByIndex>0 && !hasDistinct(sql) ) {
			rownumber.append( sql.substring(orderByIndex) );
		}
			 
		rownumber.append(") as rownumber_,");
		
		return rownumber.toString();
	}

	public String getLimitString(String sql, boolean hasOffset) {
		
		int startOfSelect = sql.toLowerCase().indexOf("select");
		
		StringBuffer pagingSelect = new StringBuffer( sql.length()+100 )
					.append( sql.substring(0, startOfSelect) ) //add the comment
					.append("select * from ( select ") //nest the main query in an outer select
					.append( getRowNumber(sql) ); //add the rownnumber bit into the outer query select list
		
		if ( hasDistinct(sql) ) {
			pagingSelect.append(" row_.* from ( ") //add another (inner) nested select
				.append( sql.substring(startOfSelect) ) //add the main query
				.append(" ) as row_"); //close off the inner nested select
		}
		else {
			pagingSelect.append( sql.substring( startOfSelect + 6 ) ); //add the main query
		}
				
		pagingSelect.append(" ) as temp_ where rownumber_ ");
		
		//add the restriction to the outer select
		if (hasOffset) {
			pagingSelect.append("between ?+1 and ?");
		}
		else {
			pagingSelect.append("<= ?");
		}
		
		return pagingSelect.toString();
	}

	private static boolean hasDistinct(String sql) {
		return sql.toLowerCase().indexOf("select distinct")>=0;
	}
	
	public String getForUpdateString() {
		return " for read only with rs";
	}

	public boolean useMaxForLimit() {
		return true;
	}
	
	public boolean supportsOuterJoinForUpdate() {
		return false;
	}
	
	public boolean supportsNotNullUnique() {
		return false;
	}

	public String getSelectClauseNullString(int sqlType) {
		String literal;
		switch(sqlType) {
			case Types.VARCHAR:
			case Types.CHAR:
				literal = "'x'";
				break;
			case Types.DATE:
				literal = "'2000-1-1'";
				break;
			case Types.TIMESTAMP:
				literal = "'2000-1-1 00:00:00'";
				break;
			case Types.TIME:
				literal = "'00:00:00'";
				break;
			default:
				literal = "0";
		}
		return "nullif(" + literal + ',' + literal + ')';
	}
	
	public static void main(String[] args) {
		System.out.println( new DB2Dialect().getLimitString("/*foo*/ select * from foos", true) );
		System.out.println( new DB2Dialect().getLimitString("/*foo*/ select distinct * from foos", true) );
		System.out.println( new DB2Dialect().getLimitString("/*foo*/ select * from foos foo order by foo.bar, foo.baz", true) );
		System.out.println( new DB2Dialect().getLimitString("/*foo*/ select distinct * from foos foo order by foo.bar, foo.baz", true) );
	}

	public boolean supportsUnionAll() {
		return true;
	}
	
	public int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException {
		return col;
	}
	
	public ResultSet getResultSet(CallableStatement ps) throws SQLException {
		boolean isResultSet = ps.execute(); 
		// This assumes you will want to ignore any update counts 
		while (!isResultSet && ps.getUpdateCount() != -1) { 
		    isResultSet = ps.getMoreResults(); 
		} 
		ResultSet rs = ps.getResultSet(); 
		// You may still have other ResultSets or update counts left to process here 
		// but you can't do it now or the ResultSet you just got will be closed 
		return rs;
	}

	public boolean supportsCommentOn() {
		return true;
	}
	
	public boolean supportsTemporaryTables() {
		return true;
	}

	public String getCreateTemporaryTableString() {
		return "declare global temporary table";
	}

	public String getCreateTemporaryTablePostfix() {
		return "not logged";
	}

	public String generateTemporaryTableName(String baseTableName) {
		return "session." + super.generateTemporaryTableName(baseTableName);
	}

	public boolean supportsCurrentTimestampSelection() {
		return true;
	}

	public String getCurrentTimestampSelectString() {
		return "values current timestamp";
	}

	public boolean isCurrentTimestampSelectStringCallable() {
		return false;
	}

	public boolean supportsParametersInInsertSelect() {
		// DB2 known to not support parameters within the select
		// clause of an SQL INSERT ... SELECT ... statement
		return false;
	}

	public String getCurrentTimestampSQLFunctionName() {
		return "sysdate";
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费电影一区| 69堂成人精品免费视频| 高清在线观看日韩| 精品亚洲成a人在线观看| 日韩中文字幕亚洲一区二区va在线 | 国产成人超碰人人澡人人澡| 国产永久精品大片wwwapp| 男男成人高潮片免费网站| 日韩电影在线免费观看| 日韩中文欧美在线| 蜜桃av一区二区三区电影| 毛片av一区二区三区| 国内精品在线播放| 国产91精品一区二区麻豆网站| 国产成人免费视频| a4yy欧美一区二区三区| 色偷偷一区二区三区| 色欧美乱欧美15图片| 欧美视频精品在线| 在线成人av影院| 精品国产sm最大网站| 国产欧美一区二区精品仙草咪| 亚洲国产高清不卡| 亚洲男人电影天堂| 亚洲午夜久久久久久久久久久 | 国产99久久久国产精品| 不卡视频在线看| 欧美性感一区二区三区| 91精品综合久久久久久| 久久这里只有精品6| 国产精品毛片大码女人| 亚洲一区二区三区三| 日韩精品免费专区| 国产丶欧美丶日本不卡视频| 91免费版pro下载短视频| 欧美亚洲一区二区在线| 日韩欧美资源站| 国产精品入口麻豆九色| 尤物av一区二区| 麻豆视频一区二区| 成人动漫在线一区| 欧美精品一二三| 2021国产精品久久精品| 亚洲人成网站在线| 青青草原综合久久大伊人精品| 国产乱码精品1区2区3区| 色综合久久中文综合久久97| 91精品在线免费观看| 国产精品污网站| 日韩在线a电影| www.亚洲激情.com| 91精品福利在线一区二区三区| 中文在线一区二区| 婷婷久久综合九色国产成人| 国产成人在线色| 欧美色倩网站大全免费| 久久久久国产精品人| 亚洲综合免费观看高清完整版在线| 老色鬼精品视频在线观看播放| 99国产欧美另类久久久精品| 欧美一级片在线| 亚洲免费毛片网站| 国产一区二区在线观看免费| 欧美在线免费观看视频| 精品福利视频一区二区三区| 亚洲欧美激情插| 激情文学综合丁香| 欧美日韩久久一区| 亚洲天堂精品在线观看| 久久99精品国产麻豆婷婷| 欧美亚洲一区二区在线| 成人免费小视频| 韩国精品免费视频| 欧美一区二区三区小说| 亚洲综合一二三区| 国产精品亚洲第一区在线暖暖韩国| 欧美久久高跟鞋激| 一区二区三区免费网站| 成人午夜短视频| 久久伊99综合婷婷久久伊| 日韩和欧美一区二区| 日本精品视频一区二区三区| 国产欧美精品一区二区三区四区| 美腿丝袜一区二区三区| 欧美欧美欧美欧美首页| 亚洲综合男人的天堂| 91网站在线播放| 国产精品入口麻豆九色| 成人一区二区在线观看| 久久综合精品国产一区二区三区 | 成人免费毛片app| 欧美精品一区男女天堂| 美女视频一区二区| 在线电影一区二区三区| 一区二区成人在线| 在线观看亚洲精品视频| 亚洲精品久久7777| av一区二区三区在线| 欧美激情综合五月色丁香小说| 精品一区二区三区免费视频| 日韩一区二区高清| 蜜桃av一区二区| 精品久久久久99| 激情文学综合插| 久久久久久日产精品| 国产一区二区三区观看| 26uuu国产一区二区三区| 久久精品av麻豆的观看方式| 精品美女在线播放| 国产一区二区91| 国产日韩欧美综合一区| 国产精品一二三四| 国产精品―色哟哟| 成人激情av网| 亚洲另类一区二区| 欧美自拍丝袜亚洲| 午夜不卡av在线| 欧美一级在线观看| 国产一区二区导航在线播放| 国产日产欧美一区二区视频| 成人精品一区二区三区四区| 亚洲欧美综合网| 91黄视频在线| 日日夜夜一区二区| 欧美xfplay| 成人涩涩免费视频| 一区二区三区精密机械公司| 欧美日本韩国一区二区三区视频| 日韩国产一二三区| 久久久www免费人成精品| 不卡视频在线看| 五月婷婷久久丁香| 久久这里只有精品6| 不卡的av电影在线观看| 亚洲精品国久久99热| 91精品国产综合久久久蜜臀图片| 国产在线看一区| 亚洲三级小视频| 欧美一卡二卡在线| 成人精品国产一区二区4080| 一区二区视频免费在线观看| 欧美一区二区三区在线视频| 国产剧情一区二区三区| 亚洲女与黑人做爰| 9191国产精品| 国产不卡高清在线观看视频| 一个色在线综合| 精品国产一区二区三区久久影院| 福利一区福利二区| 香蕉加勒比综合久久| 国产三级一区二区| 欧美日韩亚洲综合| 国产精华液一区二区三区| 亚洲综合久久久| 国产欧美一区二区精品性色| 欧美伦理电影网| 成人免费va视频| 三级在线观看一区二区| 国产精品乱人伦一区二区| 69堂精品视频| 一本到三区不卡视频| 国产在线精品免费| 亚洲一卡二卡三卡四卡无卡久久| 精品成人一区二区三区| 欧洲色大大久久| 极品少妇一区二区| 亚洲第一二三四区| 日本一区二区成人在线| 欧美一区二区免费视频| 91尤物视频在线观看| 国产一区二区女| 日韩精品亚洲专区| 亚洲欧美精品午睡沙发| 中文字幕免费一区| 欧美成人性福生活免费看| 在线精品亚洲一区二区不卡| 国产精品一区三区| 蜜桃传媒麻豆第一区在线观看| 亚洲人成亚洲人成在线观看图片| 久久久无码精品亚洲日韩按摩| 欧美区在线观看| 色域天天综合网| 成人激情视频网站| 国产一区二区毛片| 久久精品国产一区二区| 日日夜夜精品视频免费| 亚洲福利一区二区| 一区二区三区四区国产精品| 国产精品免费网站在线观看| 国产亚洲欧美日韩在线一区| 精品国产三级a在线观看| 91精品午夜视频| 欧美精品一二三区| 欧美巨大另类极品videosbest| 欧美视频在线播放| 91国偷自产一区二区开放时间 | 亚洲国产一区二区三区青草影视 | 成人丝袜18视频在线观看| 国产精品99久久久久久似苏梦涵| 久久精品国产99国产|