Dapper - 存储过程 - 'GO' 附近的语法不正确

Dapper - Stored Procedure - Incorrect syntax near 'GO'

我在 myscript.sql 文件中有一个存储过程,如下所示:

CREATE PROCEDURE [dbo].[_GetUserID]
    @EmailAddress NVARCHAR(254)
AS   
    DECLARE @UserID UNIQUEIDENTIFIER;

    SELECT @UserID = [ID] 
    FROM [dbo].[User] 
    WHERE [EmailAddress] = @EmailAddress

    PRINT @UserID    
GO

我有一些 C# 代码依赖于 Dapper 运行 这个脚本。当我将它复制并粘贴到 Azure Data Studio 中时,我可以成功 运行 这个脚本。但是,当我尝试从代码 运行 此脚本时,出现错误:

Incorrect syntax near 'GO'

我的 C# 代码如下所示:

try
{
     var script = File.ReadAllText("<path to myScript.sql is here>");

     using (var connection = new SqlConnection(dbConnectionString))
     {
         var command = connection.CreateCommand();
         command.CommandText = script;
         command.CommandType = CommandType.Text;

         connection.Open();
         command.ExecuteNonQuery();
     }
                
     Console.WriteLine("Success.");
}
catch (Exception ex)
{
     Console.WriteLine($"Failed. Reason: '{ex.Message}')");
}

我不明白为什么我可以从 Azure Data Studio 运行 myScript.sql,但是,它在我的 C# 代码中不起作用。我也在使用相同的方法创建表并且它工作正常。我不确定我错过了什么。

GO 不是 有效的 T-SQL 关键字 - 它是 分隔符 [=] 26=] Server Management Studio,显然还有 Azure Data Studio。

要解决此问题,只需从 .sql 脚本文件中删除 GO 行,然后 运行 不删除它 - 应该没问题。

换句话说:在你的存储过程中只有一个 PRINT 语句没有多大意义 - 你真的不想 SELECT @UserId 来发送数据吗返回来电者??