当前位置: 代码迷 >> Sql Server >> sql语句有关go的有关问题
  详细解决方案

sql语句有关go的有关问题

热度:76   发布时间:2016-04-24 09:42:57.0
sql语句有关go的问题
declare @i int
if object_id('tempdb..#t1')is not null
drop table #t1
go
create table #t1(id  int,name varchar(50))

set @i=1

select @i


上面语句不加go的时候运行正常,加了go后就报错说‘必须声明变量@i’
这是为什么?
------解决思路----------------------
declare @i int

這個移到go後面

go是執行上段腳本的意思,後面腳本沒有申明@i
------解决思路----------------------
GO 带表一个批次的结束 当然有问题了。
------解决思路----------------------
用GO区分了两个SQL批处理批次
局部变量@i的作用域不能超过批次
------解决思路----------------------
go代表结束
------解决思路----------------------

这样代码好看一些。你变量声明和引用用go来结束,肯定会报错

if object_id('tempdb..#t1')is not null
drop table #t1
go
create table #t1(id  int,name varchar(50))
go
declare @i int
set @i=1
select @i

------解决思路----------------------
GO是批的结束标志,按照你的逻辑,不需要中间加一个go
------解决思路----------------------
这样用时 go是批次,变量只会在同一批次时有效
------解决思路----------------------
把GO去掉
declare @i int
if object_id('tempdb..#t1')is not null
drop table #t1

create table #t1(id  int,name varchar(50))

set @i=1

select @i
  相关解决方案