不要爲用戶存儲過程使用前綴sp_,因爲它是爲系統過程保留的。
下面是一個使用RAISERROR返回消息的示例。此示例中的嚴重度爲11或更高將在應用程序中引發異常。 10或更低的嚴重程度將生成一條信息性消息。
CREATE PROCEDURE usp_DeleteTeam @pTeamId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Message varchar(2047);
UPDATE t
SET t.Deleted = 1
FROM Team t
WHERE t.TeamId = @pTeamId
AND NOT EXISTS (SELECT 1
FROM [User]
WHERE TeamId = @pTeamId)
AND NOT EXISTS (SELECT 1
FROM Account
WHERE TeamId = @pTeamId);
IF @@ROWCOUNT = 0
BEGIN
IF NOT EXISTS (SELECT *
FROM Team
WHERE TeamId = @pTeamId)
BEGIN
SET @Message = 'does not exist in Team table';
END;
IF EXISTS (SELECT *
FROM [User]
WHERE TeamId = @pTeamId)
BEGIN
SET @Message = COALESCE(@Message + ', ', '')
+ 'already exists in User table';
END;
IF EXISTS (SELECT *
FROM Account
WHERE TeamId = @pTeamId)
BEGIN
SET @Message = COALESCE(@Message + ', ', '')
+ 'already exists in Account table';
END;
SET @Message = 'Team %d: ' + @Message
RAISERROR(@Message, 11, 0, @pTeamId);
END;
END;
請不要在存儲過程中使用'sp_'前綴命名其系統默認過程名稱前綴。 – Rajesh
@Rajesh感謝你的信息。我沒有在我的查詢中使用這個前綴。爲了更好的理解我在這裏提到它。 – Felixerity