我想在asp.net页面中使用如下的sp。
如何将sp中的错误消息显示到asp.net中?
是否有通过调用sp在asp.net中执行此任务的DAL属性示例?
在sp中同时使用RAISERROR和ROLLBACK TRANSACTION是否存在冲突?
ALTER PROCEDURE [dbo].[Cyrex_ChangeUsername]
@oldName nvarchar(128),
@newName nvarchar(128)
AS
declare @error_var int, @rowcount_var int
declare @newNameCount int
begin transaction
select @newNameCount = count(*)
from Users
where Username = ltrim(rtrim(@newName))
if @newNameCount > 0
begin
RAISERROR('Username already exists. @newName=%s', 10, 1, @newName)
ROLLBACK TRANSACTION
RETURN
end
update Users
set Username = ltrim(rtrim(@newName))
where Username = ltrim(rtrim(@oldName))
SELECT @error_var = @@ERROR, @rowcount_var = @@ROWCOUNT
IF @rowcount_var <> 1 OR @error_var <> 0
BEGIN
RAISERROR('Could not Update User.Username. @oldName=%s', 10, 1, @oldName)
ROLLBACK TRANSACTION
RETURN
END
update aspnet_Users
set
Username = @newName,
LoweredUserName = LOWER(@newName)
where LoweredUserName = LOWER(@oldName)
SELECT @error_var = @@ERROR, @rowcount_var = @@ROWCOUNT
IF @rowcount_var <> 1 OR @error_var <> 0
BEGIN
RAISERROR('Could not Update aspnet_Users.Username. @oldName=%s', 10, 1, @oldName)
ROLLBACK TRANSACTION
RETURN
END
Commit transaction发布于 2011-02-03 16:20:20
我认为问题是你在你的Raiserror上使用了severity level 10。
严重度为10或更低时,不允许在.NET代码中捕获异常。
在您的proc中,如果这些条件是错误,建议您提高严重性,以便可以在.NET中捕获异常。
可以通过在连接上订阅InfoMessage event来检测小于10的严重程度-例如here。
https://stackoverflow.com/questions/4881902
复制相似问题