Génération de simples process stockés CRUD

Je travaille sur un projet soumis à certaines normes d'entreprise relatives à l'implémentation SQL. Plus précisément, que tout le contenu de SQL Server soit accessible uniquement via proc stocké. (Aucun ORM ou LINQ.)

80% ou plus de nos besoins peuvent être traités via le type de procédure CRUD (CREATE, READ, UPDATE, DELETE) de base qui devrait être assez simple à générer. Cependant, je n'ai pas réussi jusqu'ici à localiser un outil existant qui générera ces procédures stockées "base" assez simples.

Alors, quelqu'un peut-il me désigner un outil que je peux utiliser pour générer la majeure partie de mes procédures requirejses? De preference, cela permet une certaine personnalisation du process, par exemple en encapsulant les instructions dans une construction de base BEGIN/END TRY .

Merci.

Le pack d'outils SSMS de Mladen Prajdić semble correspondre à la facture. Vous pouvez personnaliser les templates qu'il utilise.

Cela vaut la peine d'essayer quand même pour ses autres fonctionnalités pratiques.

Les outils ssms pack prétendent faire ceci: http://www.ssmstoolspack.com/ . Exemple de code:

 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 ---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------