gpt4 book ai didi

sql-server - 输入格式错误时存储过程中的错误处理

转载 作者:行者123 更新时间:2023-12-03 08:51:51 28 4
gpt4 key购买 nike

我正在尝试记录由错误的输入数据格式(例如)引起的错误。存在数字字段等时输入字母

但是以某种方式我无法记录该错误,我无法理解我在哪里犯错误。请任何人能帮助我。

sample 程序

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

当我对表执行错误操作时,错误会正确记录在异常(exception)表中,例如:
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, Level 16, State 5, Procedure p_set_OPD_Registration, Line 47
Error converting data type varchar to numeric.



请帮助我如何记录此类错误。

任何帮助将不胜感激。谢谢!

最佳答案

在您的SP之上,您有这个

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
)

参数 @age定义为 NUMERIC(20,4)

当您尝试使用年龄的非数字值调用SP时,此操作将失败...

您可以将参数定义为字符串类型,并在验证后进行适当的转换...

关于sql-server - 输入格式错误时存储过程中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745140/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com