我想根据if else条件在我的存储过程中添加一些消息,我该怎么做。问题是我有三个表团队,帐户和用户。我想删除团队表中的teamA,条件是如果没有任何帐户且用户与该团队相关。我有存储过程工作正常,但我想检查条件,并希望使用if else添加一些自定义消息。请帮助我的代码。
Create PROCEDURE sp_DeleteTeam
@pTeamId int
AS
BEGIN
SET NOCOUNT ON;
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)
END
答案 0 :(得分:2)
不要将前缀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;
答案 1 :(得分:1)
使用以下SP来使用打印或选择信息。
Create PROCEDURE sp_DeleteTeam
@pTeamId int
AS
BEGIN
SET NOCOUNT ON;
IF ((NOT EXISTS (SELECT TOP 1 FROM [User] WHERE TeamId = @pTeamId)) AND (Not EXISTS (SELECT TOP 1 FROM Account WHERE TeamId = @pTeamId)))
BEGIN
UPDATE T
SET T.Deleted = 1
FROM Team t
WHERE T.TeamId = @pTeamId
SELECT 'Not exist - Table updated' AS Message
--PRINT 'Not exist - Table updated'
END
ELSE
BEGIN
SELECT 'Already exist - Table not updated.' AS Message
--PRINT 'Already exist - Table not updated.'
END
END
答案 2 :(得分:0)
据我所知,你只想看看它是否成功执行。如果正在调用存储过程在某些Applciation中,最后,将select语句作为
SELECT 'Your message' AS Message
然后在应用程序中将结果存储在数据集中并检索您的消息,
如果您未在任何应用程序中使用它,请使用
print 'your message'
OR可能会尝试更具体,并清楚地阐述您的问题。