En annan liten guldklimp som jag tror kommer att hjälpa människor att utvecklas och bli mer produktiva i sin databasutveckling. Jag är ett fan av lagrade procedurer och funktioner när jag utvecklar mjukvarulösningar. Jag gillar att mina faktiska CRUD-metoder implementeras på databasnivå. Det låter mig balansera mitt arbete mellan applikationsmjukvaran (affärslogik och dataåtkomst) och själva databasen. Jag vill inte starta ett religionskrig, men jag vill tillåta människor att utveckla lagrade procedurer snabbare och med bästa praxis genom mallar.
Låt oss börja med att skapa dina egna mallar i SQL Server 2005 Management Studio. Först måste du visa mallutforskaren i Studion.
alt text http://www.cloudsocket.com/images/image-thumb10.png
Detta kommer att visa följande:
alt text http://www.cloudsocket.com/images/image-thumb11.png
alt text http://www.cloudsocket.com/images/image-thumb12.png
alt text http://www.cloudsocket.com/images/image-thumb13.png
IDE kommer att skapa en tom mall. För att redigera mallen, högerklicka på mallen och välj Redigera. Du kommer att få ett tomt frågefönster i IDE. Du kan nu infoga din mallimplementering. Jag har här mallen för den nya lagrade proceduren för att inkludera en TRY CATCH. Jag gillar att ta med felhantering i mina lagrade rutiner. Med det nya TRY CATCH-tillägget till TSQL i SQL Server 2005 bör vi försöka använda denna kraftfulla mekanism för undantagshantering genom vår kod inklusive databaskod. Spara mallen och du är alla redo att använda din nya mall för att skapa lagrad procedur.
-- ======================================================
-- 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