繁体   English   中英

存储过程不会返回任何错误消息或数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM