我正在开发一个符合某些与SQL实现相关的公司标准的项目。具体来说,所有SQL Server内容只能通过存储过程 访问。 (没有ORM或LINQ。)
我们需要的80%或更多可以通过基本的CRUD(CREATE,READ,UPDATE,DELETE)类型的过程来处理,该过程应该相当简单。但是,到目前为止,我找不到能够生成这些相当简单的“基本”存储过程的现有工具。
那么,有人能指出我可以用来生成大部分所需程序的工具吗?最好允许对流程进行一些自定义,例如将语句包装在基本的BEGIN/END TRY
构造中。
感谢。
答案 0 :(得分:6)
答案 1 :(得分:3)
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
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------