日期:2014-05-17  浏览次数:20533 次

'GO' 附近有语法错误
java中sql语句执行有错误,但是打印出语句后在sql管理中没有问题
java中代码如下:
String sqlview="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[员工考勤卡号-按最新启  用日期]') and OBJECTPROPERTY(id, N'IsView') = 1)"+
"drop view [dbo].[员工考勤卡号-按最新启用日期]" +
"\n"+"GO"+"\n"+
"SET QUOTED_IDENTIFIER ON"+  
"\n"+"GO"+"\n"+
"SET ANSI_NULLS ON"+    
"\n"+"GO"+"\n"+
"CREATE VIEW dbo.[员工考勤卡号-按最新启用日期]"+"\n"+
" AS "+"\n"+
"SELECT DISTINCT SMT_PersonnelID, SMT_CardSerial, SMT_DateTime, SMT_State"+"\n"+
"FROM dbo.Smart_Card ta"+"\n"+
"WHERE (SMT_DateTime ="+"\n"+
"(SELECT MAX(tb.SMT_DateTime) AS Expr1"+"\n"+
"FROM dbo.Smart_Card AS tb"+"\n"+
"WHERE (tb.SMT_PersonnelID = ta.SMT_PersonnelID)))"+
"\n"+"GO"+"\n"+
"SET QUOTED_IDENTIFIER OFF"+ 
"\n"+"GO"+"\n"+
"SET ANSI_NULLS ON"+    
"\n"+"GO"+"\n"+
     ;
打印出的语句为:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[员工考勤卡号-按最新启用日期]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[员工考勤卡号-按最新启用日期]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW dbo.[员工考勤卡号-按最新启用日期]
 AS 
SELECT DISTINCT SMT_PersonnelID, SMT_CardSerial, SMT_DateTime, SMT_State
FROM dbo.Smart_Card ta
WHERE (SMT_DateTime =
(SELECT MAX(tb.SMT_DateTime) AS Expr1
FROM dbo.Smart_Card AS tb
WHERE (tb.SMT_PersonnelID = ta.SMT_PersonnelID)))
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

这个打印出来的语句直接复制到sqlserver management中是可以执行的 没有问题
但是eclipse中直接报错:com.microsoft.sqlserver.jdbc.SQLServerException: 'GO' 附近有语法错误。

这个问题怎么解决的呀?

------解决方案--------------------
用;来代替GO吧。好像GO是要换行的。
------解决方案--------------------
把go都去掉吧