2010-09-16 100 views
2

我正在开发一个受SQL特定公司标准约束的项目。具体来说,通过存储的过程只能访问所有SQL Server内容。 (无ORM或LINQ)生成简单的CRUD存储过程

我们需要的80%或更多的需求可以通过基本的CRUD(CREATE,READ,UPDATE,DELETE)类型的过程来处理,该过程应该相当简单。但是,至今我找不到一个现成的工具来生成这些相当简单的“基础”存储过程。

那么,任何人都可以指向一个工具,我可以用它来生成我所需的大部分程序?最好是允许进程的一些定制,例如将语句包装在基本的BEGIN/END TRY构造中。

谢谢。

+0

如果你有Visual Studio中那么[这就是答案] [1] [1]:http://stackoverflow.com/questions/11673563/how-do-i-generate -crud-stored-procedures-from-a-table-in-sql-server-management -s/11673757#11673757 – Arjang 2012-11-21 06:03:26

回答

6

SSMS Tools Pack来自Mladen Prajdić听起来像它可能适合法案。您可以自定义它使用的模板。

这是非常值得尝试的其他便利的功能。

+0

谢谢。我很困惑,为什么当我搜索时没有显示。我只发现了几个CodeProject文章,这些文章不太适合这个法案。 – Toby 2010-09-16 16:32:41

+0

http://www.google.com/search?q=SQL+generate+crud&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#sclient=psy&hl=zh-CN&client = firefox-a&hs = uAM&rls = org.mozilla%3Aen-US%3Aofficial&source = hp&q = SQL + 2005 + generate + crud&aq = f&aqi =&aql =&oq =&gs_rfai =&psj = 1&fp = 7b3e9e0669ddb0a1 - 第三个结果。 – Sam 2010-09-16 20:55:04

+0

太棒了!如果你不使用SSMS 2012,它看起来是免费的,我使用的是2008R2,所以我非常高兴(不是说它非常昂贵,否则无论如何)。 – 2014-01-24 08:44:11

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 

---------------------------------------------------------------------------------------- 
----------------------------------------------------------------------------------------