Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中给出错误的单行GO(批处理)语句?_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

SQL Server中给出错误的单行GO(批处理)语句?

SQL Server中给出错误的单行GO(批处理)语句?,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个问题。我正在创建以下临时程序 当我以以下格式执行时,效果良好: CREATE PROCEDURE Get_TableList_By_Name @Proc_Name VARCHAR(255) AS BEGIN SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' END GO EXEC Get_TableList_By_Name 'norway' GO DROP PROCEDURE Get_TableLis

我有一个问题。我正在创建以下临时程序

当我以以下格式执行时,效果良好:

CREATE PROCEDURE Get_TableList_By_Name
@Proc_Name VARCHAR(255)
AS
BEGIN
    SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%'
END 
GO
EXEC Get_TableList_By_Name 'norway'
GO
DROP PROCEDURE Get_TableList_By_Name 
GO
但当我以下面的格式执行相同的SQL时,会出现错误:“GO附近的语法不正确。”

如何使用GO语句在单行中编写相同的SQL? 可能吗?若否,原因为何

谢谢, Vishal

来自

Transact-SQL语句不能与GO命令占用同一行。 但是,该行可以包含注释


所以Go需要在自己的行中,除了注释。

'Go'不是SQL命令。它是由工具识别的批处理终止符 如查询分析器、SSMS、SQLCMD等。这些工具通常需要 转到另一行,并将前面的SQL语句作为批处理发送 当遇到GO时,发送到SQL Server

GO语句必须写在新行中,因为它不是T-SQL命令。
T-SQL语句不能与GO占用同一行。GO语句可以包含注释。

谢谢Astander。所以没有办法写在一行上?
CREATE PROCEDURE Get_TableList_By_Name @Proc_Name VARCHAR(255) AS BEGIN SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' END GO EXEC Get_TableList_By_Name 'norway' GO DROP PROCEDURE Get_TableList_By_Name GO

CREATE PROCEDURE Get_TableList_By_Name @Proc_Name VARCHAR(255) AS BEGIN SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' END GO 1 EXEC Get_TableList_By_Name 'norway' GO 1 DROP PROCEDURE Get_TableList_By_Name GO 1