[英]Stored procedure won't return any error message or number
这是我的插入存储过程:
CREATE PROCEDURE spainsert
@A_Name nvarchar(50)
AS BEGIN
BEGIN TRY
DECLARE Detailed_Error VAR_CHAR(MAX);
Insert into A(A_Name)
values(A_Name)
END TRY
BEGIN CATCH
SELECT
Detailed_Error = CAST(ERROR_NUMBER() AS VAR_CHAR ) + ' : '+ ERROR_MESSAGE() + ' : ' + CAST(ERROR_LINE() AS VAR_CHAR );
END CATCH
END
当我尝试输入 NUMBER 而不是 NAME 时: exec spa insert 500
,它不会显示任何错误,但只是将该行保存到表中。 你能帮我如何处理错误,如何知道编号和错误信息吗?!
谢谢你们 ! 123456787523535464654645654651541541255435.4153241653241636524165324135
事情是Sql Server
隐式地将整数值转换为varchar
值。 所以 500 被转换为 '500'。 如果你想验证你应该在你的存储过程中验证:
IF @A_Name LIKE '%[^a-z ]%'
RAISERROR('Name contains some incorrect symbols', 16, 1)
如果 name 包含除a--z, A--Z, ' '
符号,这将引发错误。
你插入查询应该是错误的。试试这个
CREATE PROCEDURE spainsert
@A_Name nvarchar(50)
AS BEGIN
BEGIN TRY
Insert into A(A_Name)
values(@A_Name)
END TRY
BEGIN CATCH
SELECT
CAST(ERROR_NUMBER() AS VAR_CHAR ) + ' : '+ ERROR_MESSAGE() + ' : ' + CAST(ERROR_LINE() AS VAR_CHAR )
END CATCH
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.