Endnu en lille guldklump, som jeg tror vil hjælpe folk med at udvikle og være mere produktive i deres databaseudvikling. Jeg er fan af lagrede procedurer og funktioner, når jeg udvikler softwareløsninger. Jeg kan godt lide, at mine faktiske CRUD-metoder implementeres på databaseniveau. Det giver mig mulighed for at balancere mit arbejde mellem applikationssoftwaren (forretningslogik og dataadgang) og selve databasen. Jeg vil ikke starte en religionskrig, men jeg vil give folk mulighed for at udvikle lagrede procedurer hurtigere og med bedste praksis gennem skabeloner.
Lad os starte med at lave dine egne skabeloner i SQL Server 2005 Management Studio. Først skal du vise skabelonstifinderen i studiet.
alt tekst http://www.cloudsocket.com/images/image-thumb10.png
Dette vil vise følgende:
alt tekst http://www.cloudsocket.com/images/image-thumb11.png
alt tekst http://www.cloudsocket.com/images/image-thumb12.png
alt tekst http://www.cloudsocket.com/images/image-thumb13.png
IDE'en vil oprette en tom skabelon. For at redigere skabelonen skal du højreklikke på skabelonen og vælge Rediger. Du vil få et tomt forespørgselsvindue i IDE. Du kan nu indsætte din skabelonimplementering. Jeg har her skabelonen for den nye lagrede procedure for at inkludere en TRY CATCH. Jeg kan godt lide at inkludere fejlhåndtering i mine lagrede procedurer. Med den nye TRY CATCH tilføjelse til TSQL i SQL Server 2005, bør vi prøve at bruge denne kraftfulde undtagelseshåndteringsmekanisme gennem vores kode inklusive databasekode. Gem skabelonen, og du er alle klar til at bruge din nye skabelon til oprettelse af lagrede procedurer.
-- ======================================================
-- 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