代码改变世界

IBatis 中使用关键字with 报错如果此语句是共用表达式或xmlnamespace字句,那么前一个语句必须以分号结尾

2010-04-29 14:41  kwjlk  阅读(2063)  评论(0)    收藏  举报

IBatis中#号和$号的区别:

用“#”的话,ibatis会在你的变量前后加上“'”(单引号),而用“$”的话,则不会加“'”(单引号)

#Table#à’Table’               $Table$àTable

 

 

可以使用如下语句测试sql语句执行的时时间

CHECKPOINT

GO

DBCC FREEPROCCACHE

GO

DBCC DROPCLEANBUFFERS

GO

DBCC FREESYSTEMCACHE('ALL') ;

GO

SET Statistics IO ON

GO

SET Statistics TIME ON

GO

declare @b datetime,@e datetime

set @b =getdate()

 

/*

 

你要执行的sql语句

*/

 

 

set @e =getdate()

select datediff(ms,@b,@e)

SET Statistics IO OFF

GO

SET Statistics TIME OFF

GO

DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE

 

 

Exec sp_executesql ‘你的sql语句’

所用时间要高于 直接执行你的sql语句

 

使用sql2005中的CTE模式改造后的语句与sql子查询模式的语句执行时间基本相同。CTE模式略高。

 

正题,在IBatis中使用sql2005的CTE功能定义with语句时,测试时报错,如果此语句是共用表达式或xmlnamespace字句,那么前一个语句必须以分号结尾。关键字’WITH’附近有语法错误

在with关键词前加入;(英文输入法下的分号)解决问题。在sql2005的查询分析器中定义CTE执行没有问题。放到上面的测试sql语句执行时间时同样报如上的错误,同样的方式解决。