در این مقاله شما یاد می گیرید که چگونه از یک Stored Procedure به یک SQL Server exception وارد شوید و همچنین خطای ورود به سیستم SQL Server از طریق Stored Procedure را برطرف کنید. برای رفع این مشکل شما را به ادامه ی مطلب و خواندن این مقاله دعئت میکنم. با من همراه باشید …
سیستم SQL Server
جدولی مطابق با روشی که می خواهید exception (استثنا) ذخیره شود ایجاد کنید.
CREATE TABLE [dbo].[ExceptionLog]( [id] [int] IDENTITY(1, 1) NOT NULL, [ErrorLine] [int] NULL, [ErrorMessage] [nvarchar](5000) NULL, [ErrorNumber] [int] NULL, [ErrorProcedure] [nvarchar](128) NULL, [ErrorSeverity] [int] NULL, [ErrorState] [int] NULL, [DateErrorRaised] [datetime] NULL )
stored procedure را ایجاد کنید به صورتی که جزئیات exception را به ExceptionLog table الحاق می کند.
Create Proc [dbo].[spGetErrorInfo] as begin insert into ExceptionLog( ErrorLine, ErrorMessage, ErrorNumber, ErrorProcedure, ErrorSeverity, ErrorState, DateErrorRaised ) SELECT ERROR_LINE () as ErrorLine, Error_Message() as ErrorMessage, Error_Number() as ErrorNumber, Error_Procedure() as 'Proc', Error_Severity() as ErrorSeverity, Error_State() as ErrorState, GETDATE () as DateErrorRaised end
یک student table برای تست کردن آن ایجاد کنید.
CREATE TABLE [dbo].[student]( [Id] [int] IDENTITY(1, 1) NOT NULL, [Name] [nchar](10) NULL, [City] [nchar](10) NULL )
یک procedure برای الحاق کردن اطلاعات به student tableایجاد کنید.
create proc spStudentInsert @name varchar(10), @city varchar(10) AS BEGIN SET NOCOUNT ON; BEGIN TRY insert into student(Name, City) values(@name, @city) END TRY BEGIN CATCH EXEC dbo.spGetErrorInfo END CATCH END
اکنون Stored Procedure را اجرا کنید.
exec spStudentInsert 'Raj', 'Varanasi'
حالا record (رکورد) وارد شده را مشاهده کنید.
select * from student
اکنون یک exception (استثنا) در روش درج شده (Insert Procedure) ایجاد کنید.
ALTER PROCEDURE[dbo].[spStudentInsert] @name varchar(10), @city varchar(10) AS BEGIN SET NOCOUNT ON; BEGIN TRY Select 1 / 0; // here i am giving hard coded value only for testing purpose if any run time exception occure it will caught into catch block insert into student(Name, City) values(@name, @city) END TRY BEGIN CATCH EXEC dbo.spGetErrorInfo END CATCH END
اکنون روش ذخیره شده (stored procedure) exec spStudentInsert ‘Raj’,’Varanasi’ را اجرا کنید.
هیچ دیدگاهی نوشته نشده است.