コード例 #1
0
ファイル: SlxCustomDialect.cs プロジェクト: dvdrtn/OpenSlx
        /// <summary>
        /// Return customized limit string (for paging queries)
        /// For performance reason the limit string is ommitted when querying the first page.
        /// </summary>
        /// <param name="querySqlString"></param>
        /// <param name="offset"></param>
        /// <param name="last"></param>
        /// <returns></returns>
        public override NHibernate.SqlCommand.SqlString GetLimitString(NHibernate.SqlCommand.SqlString querySqlString, int offset, int last)
        {
            if (!querySqlString.StartsWithCaseInsensitive("select "))
            {
                throw new ArgumentException("querySqlString should start with select", "querySqlString");
            }
            SqlString sqlString = querySqlString.Substring(6);
            string    orderSql  = querySqlString.SubstringStartingWithLast("order by").ToString();

            if (orderSql.Length != 0)
            {
                sqlString = sqlString.Substring(0, (sqlString.Length - orderSql.Length) - 1);
            }
            SqlStringBuilder builder = new SqlStringBuilder();
            int num = offset + 1;

            builder.Add("SELECT TOP ").Add(last.ToString()).Add(" ").Add(sqlString);
            if (offset > 0)
            {
                builder.Add(" WITH FIRSTROW ").Add(num.ToString());
            }
            if (orderSql.Length > 0)
            {
                builder.Add(" ").Add(orderSql);
            }
            return(builder.ToSqlString());
        }
コード例 #2
0
		public void SubstringStartingWithLastMultiplePossibilities()
		{
			SqlString sql = new SqlString(new string[] { " order by x", " order by z" });

			Assert.AreEqual("order by z", sql.SubstringStartingWithLast("order by").ToString());
		}
コード例 #3
0
		public void SubstringStartingWithLastAndParameters()
		{
			SqlString sql =
				new SqlString(
					new object[] { "select x from y where z = ", Parameter.Placeholder, " order by ", Parameter.Placeholder });

			Assert.AreEqual(new SqlString(new object[] { "order by ", Parameter.Placeholder }),
							sql.SubstringStartingWithLast("order by"));
		}
コード例 #4
0
		public void NoSubstringStartingWithLast()
		{
			SqlString sql = new SqlString(new object[] { "select x from y where z = ", Parameter.Placeholder, " order by t" });

			Assert.AreEqual("", sql.SubstringStartingWithLast("zzz").ToString());
		}
コード例 #5
0
ファイル: DB2Dialect.cs プロジェクト: juanplopes/nhibernate
		private static string GetRowNumber(SqlString sql)
		{
			return new StringBuilder()
				.Append("rownumber() over(")
				.Append(sql.SubstringStartingWithLast("order by"))
				.Append(") as rownum, ")
				.ToString();
		}