我正在从事一个项目,该项目受有关SQL实现的某些公司标准的约束。具体来说,所有SQL Server内容都可以通过存储的proc only访问。 (无ORM或LINQ。)
80%或更多我们的需求可以通过基本CRUD(CREATE,READ,UPDATE,DELETE)类型的过程来处理,该过程应该非常容易生成。但是,到目前为止,我没有找到能够生成这些相当简单的“基本”存储过程的现有工具。
所以,有人可以指出我可以用来生成大量所需过程的工具吗?最好是允许对过程进行一些自定义的方法,例如将语句包装在基本的BEGIN/END TRY
结构中。
谢谢。
SSMS Tools Pack中的[Mladen Prajdić]听起来很合适。您可以自定义其使用的模板。
反正值得尝试其他便利功能。
ssms工具包声称可以做到这一点:http://www.ssmstoolspack.com/。示例代码:
USE [AdventureWorks];
GO
IF OBJECT_ID('[Person].[usp_AddressSelect]') IS NOT NULL
BEGIN
DROP PROC [Person].[usp_AddressSelect]
END
GO
CREATE PROC [Person].[usp_AddressSelect]
@AddressID INT
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
SELECT [AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate]
FROM [Person].[Address]
WHERE ([AddressID] = @AddressID OR @AddressID IS NULL)
COMMIT
GO
IF OBJECT_ID('[Person].[usp_AddressInsert]') IS NOT NULL
BEGIN
DROP PROC [Person].[usp_AddressInsert]
END
GO
CREATE PROC [Person].[usp_AddressInsert]
@AddressLine1 nvarchar(60),
@AddressLine2 nvarchar(60),
@City nvarchar(30),
@StateProvinceID int,
@PostalCode nvarchar(15),
@rowguid uniqueidentifier,
@ModifiedDate datetime
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
INSERT INTO [Person].[Address] ([AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate])
SELECT @AddressLine1, @AddressLine2, @City, @StateProvinceID, @PostalCode, @rowguid, @ModifiedDate
-- Begin Return Select <- do not remove
SELECT [AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate]
FROM [Person].[Address]
WHERE [AddressID] = SCOPE_IDENTITY()
-- End Return Select <- do not remove
COMMIT
GO
IF OBJECT_ID('[Person].[usp_AddressUpdate]') IS NOT NULL
BEGIN
DROP PROC [Person].[usp_AddressUpdate]
END
GO
CREATE PROC [Person].[usp_AddressUpdate]
@AddressID int,
@AddressLine1 nvarchar(60),
@AddressLine2 nvarchar(60),
@City nvarchar(30),
@StateProvinceID int,
@PostalCode nvarchar(15),
@rowguid uniqueidentifier,
@ModifiedDate datetime
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
UPDATE [Person].[Address]
SET [AddressLine1] = @AddressLine1, [AddressLine2] = @AddressLine2, [City] = @City, [StateProvinceID] = @StateProvinceID, [PostalCode] = @PostalCode, [rowguid] = @rowguid, [ModifiedDate] = @ModifiedDate
WHERE [AddressID] = @AddressID
-- Begin Return Select <- do not remove
SELECT [AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate]
FROM [Person].[Address]
WHERE [AddressID] = @AddressID
-- End Return Select <- do not remove
COMMIT TRAN
GO
IF OBJECT_ID('[Person].[usp_AddressDelete]') IS NOT NULL
BEGIN
DROP PROC [Person].[usp_AddressDelete]
END
GO
CREATE PROC [Person].[usp_AddressDelete]
@AddressID int
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DELETE
FROM [Person].[Address]
WHERE [AddressID] = @AddressID
COMMIT
GO
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
如果正在寻找免费的解决方案,我正在使用Apex Sql Complete免费添加:https://solutioncenter.apexsql.com/how-to-create-and-use-crud-stored-procedures-in-sql-server/