Я пытаюсь зарегистрировать ошибку, вызванную неправильным форматом входных данных, например. ввод алфавитов при наличии числового поля и т. д.Обработка ошибок в хранимой процедуре в случае неправильного формата ввода
Но почему-то я не могу зарегистрировать эту ошибку, я не могу понять, где я ошибаюсь. Пожалуйста, помогите мне.
ПРОЦЕДУРА ОБРАЗЦА
ALTER PROCEDURE [dbo].[p_set_OPD_Registration] (
@name_pr VARCHAR(120)
,@age NUMERIC(20, 4)
,@v_out_result_num INT OUTPUT
,@v_out_result_msg VARCHAR(1000) OUTPUT
)
AS
BEGIN
BEGIN TRY
INSERT INTO [dbo].[tbl_patient_registration] (
[patient_id_pr]
,[name_pr]
,[age]
,[patient_address_1]
)
VALUES (
'2937'
,@name_pr
,ISNUMERIC(@age)
,'test'
)
IF @@ROWCOUNT > 0
BEGIN
SET @v_out_result_num = 1;
END
ELSE
BEGIN
SET @v_out_result_num = 2;
END
END TRY
BEGIN CATCH
INSERT INTO [dbo].[z_sql_exceptional_error]
VALUES (
ERROR_NUMBER()
,ERROR_SEVERITY()
,ERROR_STATE()
,ERROR_PROCEDURE()
,ERROR_LINE()
,ERROR_MESSAGE()
,getdate()
,'person ID'
);
SET @v_out_result_num = 0;
SET @v_out_result_msg = SUBSTRING(error_message(), 1, 500);
END CATCH
END
Когда я делаю что-то неправильно с таблицей, ошибка регистрируется в исключительном таблице правильно, как:
ErrorID ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage ErrorTime ErrorDescription
1 8152 16 14 p_set_OPD_Registration 15 String or binary data would be truncated. 2016-08-03 19:05:53.550 person ID
Но когда я изменить числовой ввод в алфавите, Я не могу зарегистрировать ошибку. Я просто получаю сообщение. например.
declare @v_out_result_num int;
declare @v_out_result_msg varchar(1000);
exec [dbo].[p_set_OPD_Registration] "testing", 'av', @v_out_result_num output, @v_out_result_msg output
select @v_out_result_num , @v_out_result_msg;
поле ввода AGE как «AV» В этом случае я получаю сообщение, но без регистрации ошибок.
Msg 8114, уровень 16, состояние 5, процедура p_set_OPD_Registration, строка 47
Ошибка преобразования типа данных VARCHAR в числовой.
Пожалуйста, помогите мне, как мне регистрировать такие ошибки.
Любая помощь будет высоко оценена. Спасибо!
Спасибо за ответ. – user4221591