sql2008存储过程能返回错误原因吗?

时迈 2017-05-18 03:27:55
sql2008存储过程能返回错误原因吗?比如显示那个位置填写错误,要怎么去写?

USE [pnyy]
GO

/****** Object: StoredProcedure [dbo].[p_book_info] Script Date: 05/18/2017 11:08:48 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[p_bm_book_info]

@t_isbn varchar(30),
@t_sm varchar(100),
@t_zz varchar(50),
@t_jg decimal(18, 2),
@t_lbbh varchar(2),
@t_cbs varchar(100),
@t_cbrq varchar(10),
@t_sl int
as
declare @rowcount varchar(100)
begin
insert bm_book_info(isbn,sm,zz,jg,lbbh,cbs,cbrq,sl) values (@t_isbn,@t_sm,@t_zz,@t_jg,@t_lbbh,@t_cbs,@t_cbrq,@t_sl)
select @rowcount=count(sm) from bm_book_info where sm=@t_sm

end
if @rowcount = 1
return 2
else
return @@error

GO

这个是我写的,一个图书管理的东西,我想让存储过程返回值是错误具体原因的提示,不知道该怎么弄了
...全文
700 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十林 2017-05-22
  • 打赏
  • 举报
回复
USE [pnyy]
GO

/****** Object:  StoredProcedure [dbo].[p_book_info]    Script Date: 05/18/2017 11:08:48 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[p_bm_book_info]

@t_isbn varchar(30),
@t_sm varchar(100),
@t_zz varchar(50),
@t_jg decimal(18, 2),
@t_lbbh varchar(2),
@t_cbs varchar(100),
@t_cbrq varchar(10),
@t_sl int  
as
declare @rowcount varchar(100) 
DECLARE @ErrorMessage varchar(max)
DECLARE @ErrorSeverity int
DECLARE @ErrorState int
begin


	BEGIN TRY
		insert bm_book_info(isbn,sm,zz,jg,lbbh,cbs,cbrq,sl) values (@t_isbn,@t_sm,@t_zz,@t_jg,@t_lbbh,@t_cbs,@t_cbrq,@t_sl)
		select @rowcount=count(sm) from bm_book_info  where sm=@t_sm
	END TRY
	BEGIN CATCH

		SELECT @ErrorMessage = ERROR_MESSAGE(),
		@ErrorSeverity = ERROR_SEVERITY(),
		@ErrorState = ERROR_STATE();

		RAISERROR (@ErrorMessage, -- Message text.
		@ErrorSeverity, -- Severity.
		@ErrorState -- State.
		);
	END CATCH; 



end 

GO
  • 打赏
  • 举报
回复
http://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html 看这个
二月十六 2017-05-18
  • 打赏
  • 举报
回复
不用特意写返回错误,有错误直接就自己返回给程序了。
吉普赛的歌 2017-05-18
  • 打赏
  • 举报
回复
这么简单的语句出错了, 就没有必要查行数了, 直接开启 sqlprofiler 来跟踪吧。 跟踪得到了参数, 然后手工看插入时为什么会出错。 基本上可以肯定是插入时出错了。
顺势而为1 2017-05-18
  • 打赏
  • 举报
回复
用 raiserror 可以 或者可以 在前台代码中处理

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧