大多数数据库系统基于4个最简单的数据操做操做,这些操做称为CRUD。该首字母缩写词表明建立、读取、更新和删除。数据库
在开发和管理数据库时,可使用CRUD存储过程来执行全部与数据有关的任务。这种存储过程的好处是,一旦编写了一次,即可以根据须要重复使用屡次,而无需每次都编写新代码。这是对临时SQL语句的重大改进,临时SQL语句应在每次使用它们时从新编写。ide
让咱们详细了解每一个CRUD存储过程。spa
仔细研究CRUD存储过程插件
在继续以前,咱们要说一下CRUD存储过程的命名。将它们命名为每一个过程都包含它们所应用的表的名称,而且以它们所执行的操做的名称结束,这一般是一种很好的作法。这样,为同一表编写的全部过程将被分组在一块儿,而且更容易搜索。code
可是,它不是强制性的,您能够坚持本身喜欢的任何命名模式。orm
如今,让咱们看一下第一种过程类型。blog
建立程序ip
这些将执行INSERT语句,建立一个新记录。此类过程应为表的每一列接受一个参数。开发
IF OBJECT_ID('Sales.usp_Currency_Insert') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Insert END GO CREATE PROC Sales.usp_Currency_Insert @CurrencyCode NCHAR(3), @Name dbo.Name, @ModifiedDate datetime AS SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRAN INSERT INTO Sales.Currency (CurrencyCode, Name, ModifiedDate) SELECT @CurrencyCode, @Name, @ModifiedDate /* -- Begin Return row code block SELECT CurrencyCode, Name, ModifiedDate FROM Sales.Currency WHERE CurrencyCode = @CurrencyCode AND Name = @Name AND ModifiedDate = @ModifiedDate -- End Return row code block */ COMMIT GO
读取程序it
READ过程根据输入参数中提供的主键检索表记录。
IF OBJECT_ID('Sales.usp_Currency_Select') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Select END GO CREATE PROC Sales.usp_Currency_Select @CurrencyCode NCHAR(3), @Name dbo.Name AS SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRAN SELECT CurrencyCode, Name, ModifiedDate FROM Sales.Currency WHERE CurrencyCode = @CurrencyCode AND Name = @Name COMMIT GO
更新程序
这些过程使用WHERE子句中指定的记录的主键在表上执行UPDATE语句。就像CREATE过程同样,它为每一个表列接受一个参数。
<code>IF OBJECT_ID('Sales.usp_Currency_Update') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Update END GO CREATE PROC Sales.usp_Currency_Update @CurrencyCode NCHAR(3), @Name dbo.Name, @ModifiedDate datetime AS SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRAN UPDATE Sales.Currency SET ModifiedDate = @ModifiedDate WHERE CurrencyCode = @CurrencyCode AND Name = @Name /* -- Begin Return row code block SELECT ModifiedDate FROM Sales.Currency WHERE CurrencyCode = @CurrencyCode AND Name = @Name -- End Return row code block */ COMMIT GO</code>
删除程序
此过程将删除该语句的WHERE子句中提供的行。
<code>IF OBJECT_ID('Sales.usp_Currency_Delete') IS NOT NULL BEGIN DROP PROC Sales.usp_Currency_Delete END GO CREATE PROC Sales.usp_Currency_Delete @CurrencyCode NCHAR(3), @Name dbo.Name AS SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRAN DELETE FROM Sales.Currency WHERE CurrencyCode = @CurrencyCode AND Name = @Name COMMIT GO</code>
使用dbForge SQL Complete生成CRUD过程
在SSMS和Visual Studio中都可使用的dbForge SQL Complete插件,咱们只需单击几下即可以生成CRUD过程,并具备多种选项,这些选项容许配置这些过程的生成方式。在本文中,咱们将使用SSMS展现SQL Complete的功能。
要为一个表生成CRUD过程,右键单击该表,转到SQL Complete菜单,而后单击Script Table as CRUD:
完成此操做后,将打开一个新的SQL文件。在这里,您能够看到该表的全部CRUD操做。
更改CRUD生成设置
要配置dbForge SQL Complete如何生成CRUD,您首先须要转到窗口顶部的SQL Complete菜单,而后单击“选项”:
结果将在“选项”窗口中打开,转到“CRUD”菜单,而后单击“常规”:
在此选项卡中,您能够指定CRUD生成过程当中包括哪些过程,并指定要使用的哪一个列的顺序——按字母顺序仍是按序号顺序。
您也能够经过在CRUD菜单中选择相应的选项来分别配置每一个过程。首先,您能够手动更改生成的过程的名称:
接下来,每一个过程都有惟一的选项。
对于SELECT,若是输入参数为null,则有一个Return all data复选框。
对于INSERT,能够指定是否在完成后返回插入的行。
相似的选项可用于UPDATE –它使您能够选择是否要返回更新的行。
没有其余用于DELETE的惟一选项。
最后,对于每一个过程,都有“代码模板”部分。在本节中,您能够更改指定过程的代码的生成方式。在代码模板中,以$ name $格式提供了参数(例如$ schema $或$ columns $)。经过更改这些参数,能够修改所生成过程的代码。
结论
如您所见,使用CRUD命令实现和管理数据操做过程比使用临时SQL语句更为可取,而且能够借助dbForge SQL Complete插件轻松完成此操做。