0
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- USP_TEST_SELECT
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'usp_test_select' AND type = 'P')
    DROP PROCEDURE usp_test_select
GO
CREATE PROCEDURE usp_test_select
    @id         int 
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM MY_TABLE mt WHERE mt.id = @id
END
GO
-- **********************************************

我从文本文件中读取了这个脚本,并希望使用 EF .ExecuteStoreCommand(或 EF 中的任何其他执行方法)运行它。

抛出异常:

System.Data.SqlClient.SqlException (0x80131904):“GO”附近的语法不正确。
'CREATE/ALTER PROCEDURE' 必须是查询批处理中的第一条语句。

我正在运行的脚本(文本文件)由 SQL Server Management Studio 生成,如果在那里执行,则运行成功。

4

1 回答 1

1

GO不是有效的T-SQL statement,它仅供 SQL Management Studio 使用。更改您的代码以使用动态创建 sql 例如:

If exists (condition) then exec('create procedre..')
于 2013-02-12T22:48:30.053 回答