2
对不起价值,大量的代码来了..充分利用存储过程中的另一个存储过程
我看到像这样的使用输出参数的另一个问题。我正在使用RETURN语句来返回我想要使用的值。
我有一个存储过程InsertMessage,看起来像这样:
ALTER PROCEDURE dbo.InsertNewMessage ( @messageText text, @dateTime DATETIME, @byEmail bit, @bySMS bit ) AS DECLARE @NewId int BEGIN BEGIN TRANSACTION INSERT INTO MessageSet VALUES (@byEmail, @bySMS, @dateTime, @messageText) SET @NewId = SCOPE_IDENTITY() COMMIT END RETURN @NewId
其另一个存储过程使用:
ALTER PROCEDURE dbo.InsertMessageFromUserToGroup ( @userEmail nvarchar(256), @groupId int, @messageText text, @bySMS bit, @byEmail bit ) AS --Inserts a new message to a group DECLARE @messageId int DECLARE @dateTime DATETIME = GETDATE() --First check if user is a part of the group IF NOT EXISTS (SELECT userEmail FROM UserToGroupSet WHERE userEmail = @userEmail AND groupId = @groupId) RETURN 'User not part of group' ELSE --User is a part of the group, add message BEGIN BEGIN TRANSACTION SET @messageId = [dbo].[InsertNewMessage](@messageText, @dateTime, @bySMS, @byEmail) INSERT INTO MessageToUser VALUES(@userEmail, @messageId) INSERT INTO MessageToGroup VALUES(@messageId, @groupId) COMMIT END
引起麻烦,其中我不确定如何行句柄是这一个:
SET @messageId = [dbo].[InsertNewMessage](@messageText, @dateTime, @bySMS, @byEmail)
语法看起来好,因为我可以保存它。当我运行它时,我收到错误消息:
Running [dbo].[InsertMessageFromUserToGroup] (@userEmail = [email protected], @groupId = 5, @messageText = sdfsdf, @bySMS = false, @byEmail = true). Cannot find either column "dbo" or the user-defined function or aggregate "dbo.InsertNewMessage", or the name is ambiguous. Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1. No rows affected. (0 row(s) returned) @RETURN_VALUE = Finished running [dbo].[InsertMessageFromUserToGroup].
看起来好像其他存储过程无法找到。我尝试了不同的方式来调用这个过程,但其他一切都失败了。有什么建议么?
谢谢,它现在有效。有用的链接! – Phil 2010-10-17 15:25:50