2010-09-16 102 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 

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