2017-06-12 16 views
1

Microsoft SQL Server 2008 R2 Expressの使用ストアドプロシージャの呼び出し時のエラーレポート

Webページから呼び出されたストアドプロシージャをセットアップしました。このストアドプロシージャはINSERTをテーブルに格納します。 サーバー側で呼び出されたストアドプロシージャが失敗したときに、エラーレポートなどを取得する可能性はありますか。あなたがキャッチしてみてください使用することができますSP

USE [TEST] 
GO 
/****** Object: StoredProcedure [dbo].[Web_form] Script Date: 06/08/2017 12:20:36 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  R H B 
-- Create date: 
-- Description: Web form 
-- ============================================= 
ALTER PROCEDURE [dbo].[Web_form] 
    -- Add the parameters for the stored procedure here 

    @TitleID INT,      -- WEB 1 to 3 Mr. Ms. Mrs. 
    @Forename nvarchar(30)= NULL,  -- WEB 
    @Surname nvarchar(30)= NULL,  -- WEB 
    @DateOfBirth nvarchar(30)= NULL, -- WEB yyyy-mm-dd 
    @hHomeEmail nvarchar(30)= NULL,  -- WEB 
    @HomeMobile nvarchar(30)= NULL,  -- WEB 
    @Sex nvarchar(5)= NULL,    -- WEB M/F 
    @HouseNum nvarchar(5)= NULL,  -- WEB 
    @Address1 nvarchar(30)= NULL,  -- WEB @HouseNum + @Address1 
    @Address2 nvarchar(30)= NULL,  -- WEB 
    @Address3 nvarchar(30)= NULL,  -- WEB 
    @Address4 nvarchar(30)= NULL,  -- WEB 
    @Address5 nvarchar(20)= NULL,  -- WEB Eircode 
    @Notes nvarchar(50)= NULL,   -- WEB Comments 
    @pPassword nvarchar(20)= NULL,  -- WEB Min 8 char upper lower digit (generate random temp pw) 
    @AffiliationStatusID INT,   -- WEB 1=Full 2=OAP 3=Student 
    @ConstituencyPrefix nvarchar(20) = NULL, -- NO defaut (New Online) 
    @BranchID INT = 6,    -- 2246 = New Online (Test) - 2247 = New Online (Test) 
    @MemberStatusID INT = 6,   -- 1 to 6 Affiliated,Lapsed,Deceased,Withdrawn,Not Affiliated, Incomplete 
    @VoteStatusID INT = 2,    -- 1=Voting 2=Non Voting 
    @AffiliationDate nvarchar(20)= NULL,   -- GETDATE() 
    @DateFirstJoined nvarchar(20)= NULL    -- GETDATE() 
    -- @LastUpdate INT     -- Not in use 
AS 

BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    declare @MemberNo INT 

SELECT @MemberNo = MAX(MemberNo)+1 From dbo.member; 



INSERT dbo.member (
     TitleID, 
     Forename, 
     Surname, 
     DateOfBirth, 
     HomeEmail, 
     HomeMobile, 
     Sex, 
     Address1, 
     Address2, 
     Address3, 
     Address4, 
     Address5, 
     Notes, 
     AffiliationStatusID, 
     ConstituencyPrefix, 
     MemberNo, 
     BranchID, 
     MemberStatusID, 
     VoteStatusID, 
     AffiliationDate, 
     DateFirstJoined 
     ) 

    VALUES (
     @TitleID, 
     @Forename, 
     @Surname, 
     @DateOfBirth, 
     @hHomeEmail, 
     @HomeMobile, 
     'U', 
     @HouseNum + @Address1, 
     @Address2, 
     @Address3, 
     @Address4, 
     @Address5, 
     --CASE @Address5 
     -- WHEN '' THEN 'None' 
     -- ELSE @Address5 
     -- END, 
     @Notes, 
     @AffiliationStatusID, 
     'NO', 
     @MemberNo, 
     2247, 
     1, 
     2, 
     GETDATE(), 
     GETDATE() 
     ); 


SELECT MemberID, 
     ConstituencyPrefix, 
     MemberNo, 
     BranchID, 
     Surname, 
     Forename, 
     TitleID, 
     Address1, 
     Address2, 
     Address3, 
     Address4, 
     Address5, 
     HomeEmail, 
     HomeMobile, 
     AffiliationDate FROM Member WHERE MemberNo = @MemberNo ; 


END 
+0

ストアドプロシージャを呼び出すコードで例外が発生しますか?そのコードとストアドプロシージャコードを共有しても構いませんか? –

+0

私の質問が更新されました。 –

答えて

0

呼び出さ事前

感謝。エラー・データを取り込むためのエラー・テーブルを作成します。 catchブロックで、エラーをキャプチャするinsert文を記述します。この表からレポートを作成できます。

DECLARE @inputParams VARCHAR(max) 

SELECT @inputParams = 'your input variables' 

    BEGIN TRY 
     BEGIN Transaction 

     DO Something 

    END TRY 

    BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     ROLLBACK Transaction;--ROLLBACK IN CASE OF ERROR 

    INSERT INTO ErrorLog 
    VALUES (
     ERROR_NUMBER() 
     ,ERROR_SEVERITY() 
     ,ERROR_STATE() 
     ,ERROR_PROCEDURE() 
     ,ERROR_LINE() 
     ,ERROR_MESSAGE() 
     ,GETDATE() 
     ,@inputParams 
     ); 

    THROW; 
END CATCH 

IF @@TRANCOUNT > 0 
    COMMIT Transaction; 
+0

ありがとう –

関連する問題