Sql server SQL 2008:存储过程抛出错误,因此我可以在ASP.NET中捕获

Sql server SQL 2008:存储过程抛出错误,因此我可以在ASP.NET中捕获,sql-server,stored-procedures,try-catch,Sql Server,Stored Procedures,Try Catch,我有一个简单的存储过程: BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF EXISTS(SELECT UserName FROM Party WHERE UserName = @UserName) BEGIN --This means it ex

我有一个简单的存储过程:

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF EXISTS(SELECT UserName FROM Party WHERE UserName = @UserName)
    BEGIN
        --This means it exists, return it to ASP and tell us
        SELECT 'This record already exists!'
    END
    ELSE
    BEGIN
        --This means the record isn't in there already, let's go ahead and add it
        SELECT 'Record Added'

        -- Insert statements for procedure here
        INSERT INTO Party
            (EmailAddress, UserName, LoginPin)
        VALUES (@EmailAddress, @UserName, @LoginPin)
    END

END
如何从存储过程中抛出异常,以便.NET C应用程序可以使用TRY-catch块捕获错误?

您可以在存储过程中使用RAISERROR

请参见本主题


另外,请参见

我不是指在存储过程中尝试捕获。。。除非这是抛出错误的唯一方法?@dcolombus:如果您查看Microsoft文章的第一个链接,它将提供一个使用存储过程的示例,该存储过程使用RAISERROR,并在VB.NET中具有try..catch,您应该能够在C应用程序中轻松模拟它。感谢nybbler。。。我会深入调查的。如果你遇到任何问题,请告诉我。一旦你看到它运行起来,它确实运行得很好。它似乎根本没有抛出一个错误。我已经声明了错误消息,添加了RAISERROR并注释掉了SELECT。什么也没发生。