2010-09-16 4 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-processes-from-a-table-in-sql-server-management-s/11673757 # 11673757 – Arjang

ответ

6

SSMS Tools Pack от Mladen Prajdić звучит так, как будто это может соответствовать счету. Вы можете настроить шаблоны, которые он использует.

В любом случае стоит попробовать все другие удобные функции.

+0

Спасибо. Я озадачен тем, почему это не появилось, когда я сделал обыск. Я только нашел пару статей CodeProject, которые не совсем соответствовали законопроекту. – Toby

+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=ru&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

+0

Это потрясающе! И похоже, что это бесплатно, если вы не используете SSMS 2012, я использую 2008R2, поэтому я очень доволен (не так, чтобы в любом случае это было очень дорого). –

3

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 

---------------------------------------------------------------------------------------- 
---------------------------------------------------------------------------------------- 
Смежные вопросы