在C#代码中创建多个存储过程

时间:2016-10-18 05:27:33

标签: c# sql

我试图在C#中执行一个脚本,该脚本将在SQL 2008数据库中创建多个存储过程。

我尝试将它们全部放在一个文件中,但是当我尝试使用

时出错
Incorrect syntax 'create procedure' must be the only statement in the batch.

如果我在创建过程之后放置GO,如果在单词GO上出现语法错误而失败。

C#代码看起来像这样;

using (SqlConnection con = new SqlConnection(conString))
                {
                    con.Open();

                    foreach(string scriptFile in scriptFiles)
                    {
                        var command = con.CreateCommand();
                        command.CommandText = scriptFile;
                        int a = command.ExecuteNonQuery();
                        command.Dispose();
                        if (a == -1) successFlag = true;
                    }

                    con.Close();
                    con.Dispose();
                }

所以我基本上在同一个txt文件中有一堆Create Procedure调用,我想在数据库上执行它来创建所有存储过程。

    Create PROCEDURE [dbo].[msp_AddBulkNewEmployeeUploadDetails]      
    snip
    CREATE PROCEDURE [dbo].[msp_AddNewEmployeeDetails]
    snip

有没有办法在单个文件中而不是在多个文件中执行此操作?

1 个答案:

答案 0 :(得分:1)

您需要将每个过程定义与GO分开,解析GO(并将其删除)并单独运行每个过程。

另一种方法是使用像DBUp这样的预卷工具。

无论您已经使用什么来创建scriptFiles集合,只需要进行GO解析。

每个存储过程有一个文件有一个好处:它使版本控制(和版本比较)更容易。