Další malá pecka, která podle mě pomůže lidem vyvíjet se a být produktivnější při vývoji jejich databáze. Při vývoji softwarových řešení jsem fanouškem uložených procedur a funkcí. Líbí se mi implementace mých skutečných metod CRUD na úrovni databáze. Umožňuje mi to vyvážit mou práci mezi aplikačním softwarem (obchodní logika a přístup k datům) a samotnou databází. Nechci rozpoutat náboženskou válku, ale chci lidem umožnit vyvíjet uložené procedury rychleji as osvědčenými postupy prostřednictvím šablon.
Začněme vytvářením vlastních šablon v SQL Server 2005 Management Studio. Nejprve musíte ve Studiu zobrazit Průzkumníka šablon.
alternativní text http://www.cloudsocket.com/images/image-thumb10.png
Zobrazí se následující:
alternativní text http://www.cloudsocket.com/images/image-thumb11.png
alternativní text http://www.cloudsocket.com/images/image-thumb12.png
alternativní text http://www.cloudsocket.com/images/image-thumb13.png
IDE vytvoří prázdnou šablonu. Chcete-li šablonu upravit, klikněte na šablonu pravým tlačítkem a vyberte Upravit. V IDE získáte prázdné okno Query. Nyní můžete vložit implementaci šablony. Mám zde šablonu nové uložené procedury pro zahrnutí TRY CATCH. Rád zahrnuji zpracování chyb do svých uložených procedur. S novým přírůstkem TRY CATCH do TSQL v SQL Server 2005 bychom se měli pokusit použít tento výkonný mechanismus zpracování výjimek prostřednictvím našeho kódu včetně kódu databáze. Uložte šablonu a jste připraveni použít novou šablonu pro vytvoření uložené procedury.
-- ======================================================
-- Create basic stored procedure template with TRY CATCH
-- ======================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
-- Add the parameters for the stored procedure here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN TRY
BEGIN TRANSACTION -- Start the transaction
SELECT @p1, @p2
-- If we reach here, success!
COMMIT
END TRY
BEGIN CATCH
-- there was an error
IF @@TRANCOUNT > 0
ROLLBACK
-- Raise an error with the details of the exception
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO