这似乎是一个简单的问题,但是我还没有找到答案。
我有以下存储过程
CREATE PROCEDURE [dbo].[AllocateId]
AS
BEGIN TRANSACTION
UPDATE TOP(1) IdReservation
SET IsAllocated = 1
OUTPUT DELETED.Id
WHERE IsAllocated = 0
COMMIT TRANSACTION
GO
它已通过ExecuteFunction
ObjectContext在C#+ EF代码中使用,没有问题
ObjectResult<int> objectResult = ExecuteFunction<int>("AllocateId");
但是,当我尝试直接从SQL脚本调用它时,它似乎不起作用
declare @Id int
EXEC @Id = [dbo].[AllocateId]
@Id
始终为0。如何在sql脚本中将值获取到@Id变量中?
过程返回值不同于该过程返回的结果集。您的存储过程返回一个结果集,并且不返回任何返回值(最终为null
,0
在退出过程时将被隐式转换为)。
为了获得结果集,您需要对现有过程进行调整,您需要insert ... exec
:
declare @t table (id int);
insert into @t
exec [dbo].[AllocateId];
如果还要返回一个值作为返回值,则应修改存储过程:
CREATE PROCEDURE [dbo].[AllocateId]
AS
BEGIN TRANSACTION
declare @id int;
UPDATE TOP(1) IdReservation
SET @id = Id, IsAllocated = 1
OUTPUT DELETED.Id
WHERE IsAllocated = 0
COMMIT TRANSACTION
return @id;
然后它将按照您在问题中描述的方式工作。
本文向大家介绍将列的值存储到MySQL存储过程的变量中,包括了将列的值存储到MySQL存储过程的变量中的使用技巧和注意事项,需要的朋友参考一下 要声明变量,请在MySQL存储过程中使用DECLARE。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是创建存储过程并将上述表的列值存储在存储过程变量中的查询- 调用存储过程- 这
问题内容: 我在JavaScript中有以下代码: PHP代码:- 注意:我不希望在表单提交中使用它。我在JavaScript中有一些逻辑,我想在同一PHP页面中使用它…请让我知道我该怎么做。 问题答案: 您必须记住,如果JS和PHP位于同一个文档中,则将首先在服务器上执行PHP,然后在浏览器上执行JS,并且两者将永远不会交互(除非您在哪里用PHP输出JS,这实际上不是两个引擎之间的交互)。 考虑
问题内容: 将从大型文本文件提取的列表中返回最大的列表,但是如何将输出存储为变量? 问题答案: 使用命令替换: 另外,出于可移植性考虑,我建议始终将用作参数。我遇到了一些无法使用的化身。
问题内容: 在MS SQL 2008R2上,我希望能够将消息输出捕获到变量中。我需要在许多数据库上运行脚本。捕获消息输出(来自print或raiserror的消息)并将其记录到表中。我需要从存储过程中执行此操作。 对于此脚本 我想得到 或者 更新 我决定接受@rs建议。对我来说,登录表格是最简单的方法。使用SP进行日志记录(以保持代码干净),再加上一个小的正则表达式来重构我的所有脚本。该解决方案将
问题内容: 我需要一个变量来保存从数据库中检索到的结果。到目前为止,这基本上是我正在尝试但没有成功的方法。 如您所见,我对bash命令的理解不是很好。 问题答案: 我对MySQL命令行界面了解不多,但是假设您只需要帮助,可以尝试像下面这样交换命令: 它将字符串回显到MySQL。或者,您可以更喜欢并使用一些新的bash功能(here字符串) 结果相同(假设您使用的是最新的bash版本),而没有涉及e
问题内容: 与PHP中的mysql中的存储过程无关,文档完全缺乏。我目前有一个通过PHP调用的存储过程,如何获取out参数的值? 问题答案: 它看起来像在这篇文章中回答: http://forums.mysql.com/read.php?52,198596,198717#msg-198717 使用mysqli PHP API: 假设sproc myproc(IN i int,OUT j int):