sqlserver中 go 是什么意思?

cqq 2006-05-31 09:17:36
一直不是很明白 go 地用法,

比如我在 查询分析器



use database
select * from table1
select * from table2



use database
Go
select * from table1
Go
select * from table2


有什么区别呢? 多谢
...全文
1960 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xeqtr1982 2006-05-31
  • 打赏
  • 举报
回复
create table a

insert into a
insert into a

select * from a
---------------
create table a
go
insert into a
insert into a
go
select * from a
go

这两种写法都会从头执行的。下面的是分批执行的
cqq 2006-05-31
  • 打赏
  • 举报
回复
xeqtr1982(HaN)

哦,那go的意思就是批处理, 把代码分成一个一个的类似于过程的块

但是,执行的话 还是从头到尾都执行,

没有go ,是从头到尾 一句一句的执行
有go ,是从头到尾 一块一块的执行

我这样理解对吗?
xeqtr1982 2006-05-31
  • 打赏
  • 举报
回复
--比较一下这两句
create table a(id int)

create proc b
as

select 1
-------------------------
create table a(id int)
go

create proc b
as

select 1
cqq 2006-05-31
  • 打赏
  • 举报
回复
我的意思是, 我用查询分析器写sql语句

开始创建表,以后就操作表, 比如

create table a

insert into a
insert into a

select * from a

我想每次执行我最后面的一条sql语句, 而不是所有的从 建表开始,
现在我都是选中某一条sql语句,然后执行。


cqq 2006-05-31
  • 打赏
  • 举报
回复
use database
Go
select * from table1
Go
select * from table2
go

那我在查询分析器里,F5执行,还是两个表都查询啊???
itblog 2006-05-31
  • 打赏
  • 举报
回复
GO代表GO之前的以及上一个GO之后的批处理语句执行完毕的标志~
就拿给变量赋值来说吧
先声明一个变量
这时可以正常输出~
如果在他俩中间加go
delcare @a varchar(100)
go
select @a='有值'
go
此时要求声明变量@a,因为他们不处于同一个批处理语句当中,正确的应该是:
delcare @a varchar(100)
go
delcare @a varchar(100)
select @a='有值'
go
xeqtr1982 2006-05-31
  • 打赏
  • 举报
回复
--这样写依次执行
create table a(F_id int,F_code varchar(10),F_name varchar(10),F_state int)
go

create table b(F_id int,F_code varchar(10),F_name varchar(10))
go

create table d(F_id int,F_code varchar(10),F_name int)
go

--这样写三条一起执行
create table a(F_id int,F_code varchar(10),F_name varchar(10),F_state int)
create table b(F_id int,F_code varchar(10),F_name varchar(10))
create table d(F_id int,F_code varchar(10),F_name int)
go

加go会运行go前的一批语句。
cqq 2006-05-31
  • 打赏
  • 举报
回复
拜托,这些我都看过,还是不明白
  • 打赏
  • 举报
回复
还有,就是存储过程中不要写go, 如果写了,有可能go后面的sql代码就执行不到了
xeqtr1982 2006-05-31
  • 打赏
  • 举报
回复
GO
用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束。

语法
GO

注释
GO 不是 Transact-SQL 语句;而是可为 osql 和 isql 实用工具及 SQL Server 查询分析器识别的命令。

SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。SQL 查询分析器和 osql 及 isql 命令提示实用工具执行 GO 命令的方式不同。有关更多信息,请参见 osql 实用工具、isql 实用工具和 SQL 查询分析器。

GO 命令和Transact-SQL 语句不可在同一行上。但在 GO 命令行中可包含注释。

用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。

brio8425 2006-05-31
  • 打赏
  • 举报
回复
执行批处理吧。。。。
  • 打赏
  • 举报
回复
执行

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧