日期:2014-05-18  浏览次数:20576 次

在exec(@sql)执行时报错.@sql写有go和create
declare @sql varchar(1000) =''
select @sql=
'if(object_id(''t1'')is not null)
drop table t1
go
create table t1
(id int)
go ' 
print @sql
select @sql
exec (@sql)



------解决方案--------------------
在正式执行时,print 和select去掉,以免影响。另外,如果取消go都不行的话,那你就尝试分开两个动态字符串来执行吧。我很少开发了,但是听说动态sql里面还有begin /end里面不能用go,不知道是不是。
------解决方案--------------------
把go直接去掉就好了。exec(@sql)中的参数只能包含sql语句,而go不属于sql语法,只是批处理提交的一个命令而已。
------解决方案--------------------
go 应该放在exec之前,在调用这个方法之前就应该批处理。
------解决方案--------------------
SQL code

declare @sql varchar(1000) =''
select @sql=
'if(object_id(''t1'')is not null)
drop table t1
create table t1
(id int) '  
print @sql
select @sql
exec (@sql)