単純なCRUDストアドプロシージャの生成

code-generation sql-server stored-procedures
単純なCRUDストアドプロシージャの生成

私は、SQLの実装に関連する特定の企業標準に従うプロジェクトに取り組んでいます。 具体的には、すべてのSQL Serverコンテンツにストアドプロシージャ経由でのみアクセスすること。 (ORMまたはLINQなし。)

ニーズの80%以上は、基本的なCRUD(CREATE、READ、UPDATE、DELETE)タイプの手順で処理できます。この手順は、生成が非常に簡単です。 ただし、これまでのところ、これらの非常に単純な「ベース」ストアドプロシージャを生成する既存のツールを見つけることができませんでした。

だから、誰かが私の必要な手順の大部分を生成するために使用できるツールを私に指すことができますか? 基本的な「BEGIN / END TRY」コンストラクトでステートメントをラップするなど、プロセスのカスタマイズを可能にするものが望ましい。

ありがとう。

  2  1


ベストアンサー

MladenPrajdićのhttp://www.ssmstoolspack.com/Features#CRUD[SSMS Tools Pack]は、法案に合うように聞こえます。 使用するテンプレートをカスタマイズできます。

とにかく他の便利な機能を試してみる価値があります。

6


ssms tools packはこれを行うと主張しています: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

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

3


タイトルとURLをコピーしました