我一直在这墙上撞了一段时间。我知道您可以用C#代码创建一个存储过程,就可以了。但是我不知道的是,然后我可以将该存储过程 保存 到SQL
Server上
,但是可以通过C#代码完成吗?
场景是:我想通过代码创建一个测试数据库,然后想向新创建的测试数据库(服务器端)添加存储过程-同样,所有操作都通过相同的C#代码项目完成。
是的,这是可能的。在这里,我给你一个例子。
public partial class InitialEntities : DbMigration
{
public override void Up()
{
CreateStoredProcedure(
"dbo.InsertEmployee",
p => new
{
Code = p.String(),
Name = p.String(),
DepartmentId = p.Int(),
},
body:
@"INSERT [dbo].[EmployeeMasters]([Code], [Name], [DepartmentId])
VALUES (@Code, @Name, @DepartmentId)
DECLARE @EmployeeId int
SELECT @EmployeeId = [EmployeeId]
FROM [dbo].[EmployeeMasters]
WHERE @@ROWCOUNT > 0 AND [EmployeeId] = scope_identity()
SELECT t0.[EmployeeId]
FROM [dbo].[EmployeeMasters] AS t0
WHERE @@ROWCOUNT > 0 AND t0.[EmployeeId] = @EmployeeId"
);
CreateStoredProcedure(
"dbo.UpdateEmployee",
p => new
{
EmployeeId = p.Int(),
Code = p.String(),
Name = p.String(),
DepartmentId = p.Int(),
},
body:
@"UPDATE [dbo].[EmployeeMasters]
SET [Code] = @Code, [Name] = @Name, [DepartmentId] = @DepartmentId
WHERE ([EmployeeId] = @EmployeeId)"
);
CreateStoredProcedure(
"dbo.DeleteEmployee",
p => new
{
EmployeeId = p.Int(),
},
body:
@"DELETE [dbo].[EmployeeMasters]
WHERE ([EmployeeId] = @EmployeeId)"
);
}
public override void Down()
{
DropStoredProcedure("dbo.DeleteEmployee");
DropStoredProcedure("dbo.UpdateEmployee");
DropStoredProcedure("dbo.InsertEmployee");
}
}
没有实体框架
StringBuilder sbSP = new StringBuilder();
sbSP.AppendLine("CREATE PROCEDURE [spInsertADAuthorization] @AD_Account varchar(255),@AD_SID varchar(255),@AD_EmailAddress varchar(255),@DateImported datetime,@Active bit AS BEGIN SET NOCOUNT ON; INSERT INTO AD_Authorization (AD_Account, AD_SID, AD_EmailAddress, DateImported, Active) VALUES (@AD_Account,@AD_SID,@AD_EmailAddress,@DateImported,@Active) END");
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(sbSP.ToString(), connection))
{
connection.Open();
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
connection.Close();
}
}
为了解决MySql中的问题,即某些语句只允许在我试图创建的存储过程中运行,然后在JdbcTem板提交的sql中删除存储过程。一个简单的例子是(这恰好是在Spring引导中): cript.sql在哪里 在mySql workbench中运行它可以很好地工作,但是由JdbcTemplate提交时会出现错误 据我所知,这是因为JdbcTemplate不允许使用那些
问题内容: 我想检查是否存在存储过程列表。我希望所有这些都在1个脚本中一个接一个地完成。到目前为止,我有这种格式: 等等。但是,出现以下错误: 关键字“过程”附近的语法不正确。 为什么我的工作不正常? 问题答案: 必须是批处理中的第一个语句。我通常会这样: (不要忘记授予声明,因为如果您重新创建proc,它们将会丢失) 部署存储过程时要考虑的另一件事是,删除可以成功而创建失败。出现问题时,我总是使
问题内容: 我有这个简单的服务器/客户端应用程序。我正在尝试让服务器通过OutputStream(FileOutputStream,OutputStream,ObjectOutputStream等)发送文件并在客户端将其接收,然后再将其保存到实际文件中。问题是,我尝试这样做,但一直失败。每当我创建文件并将从服务器接收到的对象写入文件时,都会得到损坏的图像(我只是将其另存为jpg,但这无关紧要)。这
MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。 编写存储过程并不是件简单的事情,但是使用存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提高效率,因此应该尽可能的学会使用存储过程。 下面主要介绍如何创建存储过程。 可以使用
问题内容: 我有一个存储过程,该过程将通过复制旧表的结构来创建新表。但是在创建新表之前,我需要检查该表是否存在,如果存在,则需要先删除该表。这是我的存储过程。 但是,如果该表存在,我总是会收到类似以下的错误。哪里错了? 问题答案: 让我感到难过…在这种情况下,“如果存在”似乎无法与exec配合使用。更新了以下脚本:
在Teradata16上创建存储过程时sql出错,请问这个查询有什么问题? 替换过程tutorial_db.banks(out test Varchar(20))BEGIN select name from tutorial_db.banks end;