SQL server 中常见存储过程,go的作用??

if object_id('getInvNo_OrderNo') is not null
drop procedure getInvNo_OrderNo
go
create Proc getInvNo_OrderNo
as
begin
select [a].[Inv_No] ,[b].[Order_No] from [AX_POS_05052011] [a] join [AX_POS_05052011] [b]
on [a].[Inv_date]= [b].[Inv_date]
end
go
exec getInvNo_OrderNo

如果没有上述两个go的话,执行就会出错。为什么?
如果缺少第一个go,则提示“'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.”
如果缺少第二个go,执行过程的时候,只是显示success ,但不把查询结果显示出来……求高手指点

  GO在存储过程或语句中起结束,终止上面语句的作用。
  官网的解释:
  GO用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束。
  注释:
  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 命令后引用。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-14
呵呵,其实这个go的解释很简单。
如果缺少第一个go,然后你点执行,后面的需要前面语句执行的结果,而你的第一个go前面的语句可能还没执行完毕,而第二个语句却又用到那个语句执行的结果。
那第二个语句没go的话,是会显示成功执行,但不会把结果显示出来,因为它还认为该语句还没有执行完毕。追问

SQL 不是执行到哪里,结果就会相应显示吗? 比如有两个select 语句,第一个执行后就中断,结果会显示第一个查询结果,不显示第二个……
这和你说的“那第二个语句没go的话,是会显示成功执行,但不会把结果显示出来,因为它还认为该语句还没有执行完毕。”不一样耶

第2个回答  2011-06-14
go 执行上述批处理
否则就是整个statement,看F1
第3个回答  推荐于2017-11-24
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]本回答被提问者采纳
第4个回答  2015-05-04
go只是代表一个结束性的作用啊。。没有实质性的含义啊

sqlserver中go语句有什么用,我不写go也能完成语句的执行啊
GO表示一个批处理的结束, SQLSERVER遇到Go以后就会将GO之前的语句作为一整批进行处理 你在SSMS里执行的时候, 通常加不加都可以,但是如果实在SQLCMD下执行, GO就是一个执行命令了 另外GO后面可以跟参数, 让整批语句执行N次, 比如 GO 100

存储过程的”GO“子句是什么用?
GO 不是 Transact-SQL 语句;而是可为 osql 和 isql 实用工具及 SQL Server 查询分析器识别的命令。SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的...

SQL命令use、go、exec的作用是什么
在SQL中,use、go、exec这三个命令具有特定的作用,对数据库操作进行精确控制。use 数据库名; 这个命令的作用是切换到指定的数据库。一旦执行了此命令,所有的后续SQL操作都将针对切换后的数据库进行。go 命令则用于在SQL脚本中分隔单个命令。在多条命令编写时,每一条命令执行完毕后,可以使用go命令标...

SQL命令use、go、exec的作用是什么?
go --单独成行,表示一个批处理结束 exec sp_tables; --执行存储过程的关键

在transact-sql 中的go有什么用?
GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席...

存储过程问题,我想知道这两样做有什么区别
执行存储过程,OUT几个参数;第二种的话你可以传一条不完整的SQL语句进去,然后执行存储过程后,变成完整的语句给你执行。第二种比如 CREATE PROCEDURE dbo.qinfo_CC2 strsql varchar(5000)AS DECLARE @sql varchar(5000)set @sql=@strsql+ “where 子句什么的”EXEC(@sql)GO 个人理解 ...

sql server如何用存储过程把多个表的数据添加到一张表中,表字段都很...
然后字段是哪些 如果表名不变 字段类似的话 我帮你写个模型 create proc usp_tableall as insert into 表名 --这里表要存在 存储你处理的数据 否则就用select * into from tb 的格式 select col1,col2 from a union all select col1,col2 from b ……go exec usp_tableall ...

关于sql sever 的系统存储过程
系统存储过程:(System stored Procedure)sp_开头,为SQLSERVER内置存储过程。扩展存储过程:(Extended stored Procedure),也就是外挂程序,用于扩展SQLSERVER的功能,以sp_或者xp_开头,以DLL的形式单独存在。(系统存储过程和扩展存储过程都是在master数据库中。sp_开头的可是全局的,任何一个数据库都...

存储过程的”GO“子句是什么用?
oracle的存储过程中不能直接select,必须要将结果放到变量中,即类似select count(*)into count1 from checktmp这种写法。直接写成select from checktmp order by expressid肯定会报错的,因为oracle不知道你要select干什么。

SQL server中,存储过程基础和表达式怎么写,然后约束怎么理解?
go 有参数存储过程:全局变量 全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。选出指定姓名的学生信息:create proc StuProc sname varchar(100)as begin select S#,Sname,Sage,Ssex from student where sname=@sname end go exec StuProc '赵雷...

相似回答