SQL Server exec 关键字

5
在T-SQL中,exec关键字有什么作用?
我尝试过。
EXEC sp_rename 'mytable.foo', 'bar', 'column';
/* and */
sp_rename 'mytable.foo', 'bar', 'column';

这两个命令似乎产生了相同的结果。


此外,GO关键字的作用是什么?它似乎也没有任何作用。 - user6356221
4
文档清楚地解释了 EXEC 的作用。https://msdn.microsoft.com/zh-cn/library/ms188332.aspx - Sean Lange
4
GO 不是一个关键字,它是 SSMS 中默认的批处理分隔符。 - Sean Lange
@Sam GO 用于定义一个批处理。例如,变量只能在它们被定义的同一批处理中访问。因此,在错误的行中使用 GO 可以关闭批处理,这样在批处理内部定义的变量将不再能够在批处理外部访问。 - Vahid Farahmandian
2个回答

11

如果EXEC XXX是批处理中的第一条语句,则使用EXEC是可选的,您可以直接调用XXX而不使用EXEC。但是,如果EXEC不是批处理中的第一条语句,则应该指定EXEC以调用XXX。然而,最佳实践是在任何情况下都使用它,因为它可以提高代码的可读性。


3

EXEC关键字告诉SQL你想要运行存储过程、函数或字符串。语法可以在此处找到:https://msdn.microsoft.com/zh-cn/library/ms188332.aspx

EXEC是使用Transact SQL时必不可少的,当你想要动态构建一个SQL语句时,通常的做法是先在一个临时变量字符串中构建SQL语句,然后使用EXECUTE关键字来执行它。

例如:

DECLARE @SQL varchar(MAX)

DECLARE @DynamicColumnName varchar(20)

DECLARE @SomeDatabase varchar(20)

SELECT @DynamicColumnName =  'Column1'

SELECT @SomeDatabase = 'MyDB'

SELECT @SQL = 'USE ' +@SomeDatabase +
' INSERT INTO #NewTable
  SELECT '+@DyanmicColumnName + 
  ' FROM Mytable'

EXEC (@SQL)

上述代码将执行以下语句:“USE MyDB INSERT INTO #NewTable SELECT Column1 FROM Mytable”。
至于GO,它是用于结束一组语句的命令。这可以出于各种原因使用,但我建议从这里开始研究:https://msdn.microsoft.com/en-us/library/ms188037.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接