回答

收藏

在SQL Server中使用GO关键字

技术问答 技术问答 208 人阅读 | 0 人回复 | 2023-09-13

我知道使用GO关键字。它将多个语句作为一个整体发送到sql server,而不是一个一个地发送每个语句。我希望我是对的!' J* A( L) o' x3 I
但我想知道程序员在实际应用中会使用它吗。就像我们创建一个存储过程一样,它也做同样的事情,它还会编译代码并制定执行计划,然后将整个组发送到服务器。/ o- p/ ?- P3 Y$ K  X& ?$ K
那么我们是否需要在数据库对象(例如触发器,视图,存储过程)的编码中指定GO关键字?, \( V$ S: o% [8 g4 F
                1 X/ M: _! V0 u) R3 E9 y
解决方案:' [) e/ o. F$ Z% Q4 O
                9 w3 o9 z' A) L; c5 q( @

5 P# L9 q4 J. G
- |  t* c4 V7 I/ g                GO 是用于发信号通知批处理结束的命令。请注意,它不是T-SQL语句。
9 u3 t0 ]( X1 e. v( c" X' y批处理 是一组从一个应用程序同时发送到SQL Server以便执行的一个或多个Transact-SQL语句
. ~; s; K2 }( k- t+ c' \GO在SQL Server中非常有用。但是,仅在真正需要时才需要使用它。因此,您需要记住,在使用GO命令定义批处理的同时,还要 定义该 特定T-
, H3 @3 ?0 |# k5 D7 r  h* kSQL代码的范围。批处理中定义的局部变量特定于该批处理。
! Q/ a1 v7 A' q0 w范围示例-
1 }- I" z7 g' ?0 m2 S% zDECLARE @STRING1 AS VARCHAR(50), I( m; [1 m/ r6 ~1 G
DECLARE @STRING2 AS VARCHAR(50)$ T- N. _) H' ~! [4 ]' [
SET @STRING1='BATCH 2'/ B; E. X" O! o* I; s1 }! N8 ]/ |
SET @STRING2='BATCH 3'
/ G. j3 Z; f" T0 O2 E2 P9 @3 q; fSELECT @STRING1 AS RESULT
6 e9 h# S7 H: j$ z, pGO4 j/ T$ L  B6 G/ c0 |
SELECT @STRING2 AS RESULT. g8 d4 X0 i) J2 n& V8 U: v# V
GO  W! t* H! h$ Z$ j& i6 R: J
运行此命令会给您说未声明@ STRING2的错误。因为该变量的范围以GO结尾。因此要当心使用GO并明智地使用它。
0 h" j6 M0 E+ _; |来源-http://aartemiou.blogspot.com/2009/08/using-go-command-in-sql-
" K  j+ c# w' tserver.html
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则