【发布时间】:2011-04-26 14:35:43
【问题描述】:
抱歉,后面有很多代码..
我看到另一个使用输出参数的问题。我正在使用 RETURN 语句来返回我想要使用的值。
我有一个如下所示的存储过程 InsertMessage:
更改程序 dbo.InsertNewMessage ( @messageText 文本, @dateTime 日期时间, @byEmail 位, @bySMS 位 ) 作为 声明@NewId int 开始 开始交易 插入消息集值(@byEmail、@bySMS、@dateTime、@messageText) SET @NewId = SCOPE_IDENTITY() 犯罪 结尾 返回@NewId另一个存储过程使用的:
更改程序 dbo.InsertMessageFromUserToGroup ( @userEmail nvarchar(256), @groupId 整数, @messageText 文本, @bySMS 位, @byEmail 位 ) 作为 --向组插入新消息 声明@messageId int 声明 @dateTime DATETIME = GETDATE() --首先检查用户是否是组的一部分 如果不存在(从 UserToGroupSet 中选择 userEmail,其中 userEmail = @userEmail AND groupId = @groupId) RETURN '用户不属于组' ELSE --用户是组的一部分,添加消息 开始 开始交易 SET @messageId = [dbo].[InsertNewMessage](@messageText、@dateTime、@bySMS、@byEmail) 插入 MessageToUser 值(@userEmail,@messageId) 插入 MessageToGroup 值(@messageId,@groupId) 犯罪 结尾导致麻烦且我不确定如何处理的行是这一行:
SET @messageId = [dbo].[InsertNewMessage](@messageText、@dateTime、@bySMS、@byEmail)语法似乎没问题,因为我可以保存它。当我运行它时,我收到错误消息:
运行 [dbo].[InsertMessageFromUserToGroup](@userEmail = test@test.com,@groupId = 5,@messageText = sdfsdf,@bySMS = false,@byEmail = true)。 找不到列“dbo”或用户定义的函数或聚合“dbo.InsertNewMessage”,或者名称不明确。 EXECUTE 之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。先前计数 = 0,当前计数 = 1。 没有行受到影响。 (返回 0 行) @RETURN_VALUE = 完成运行 [dbo].[InsertMessageFromUserToGroup]。似乎找不到其他存储过程。我尝试了不同的方法来调用该过程,但其他一切都失败了。有什么建议吗?
【问题讨论】: