作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的存储过程返回预期值,但 OUT 参数没有返回任何内容。在程序退出之前打印 out 参数的值,该参数的值已设置并且看起来很棒。那么为什么我的测试代码没有得到任何值呢?
USE MyDB
GO
EXECUTE sp_addmessage
@msgnum = 51001,
@severity = 16,
@msgtext = N'Resource NOT Available',
@lang = 'us_english',
@replace = REPLACE
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetNewFileNumber]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[GetNewFileNumber]
GO
CREATE PROCEDURE dbo.GetNewFileNumber
(
@NextFileNum nvarchar(11) = NULL output
)
AS
BEGIN
set transaction isolation level serializable
begin transaction
declare @LockResult int;
declare @CurrentDate date;
declare @FileNumberDate date;
declare @FileNumber int;
execute @LockResult = sp_getapplock
@Resource = 'GetNewFileNumber_TRANSACTION',
@LockMode = 'Exclusive',
@LockTimeout = 0
if @LockResult <> 0
begin
rollback transaction
raiserror ( 51001, 16, 1 )
return
end
set @CurrentDate = CONVERT (date, GETUTCDATE());
select @FileNumberDate = filedate,
@FileNumber = fileCount from dbo._globalCounters;
if @FileNumberDate != @CurrentDate
begin
set @FileNumberDate = @CurrentDate;
set @FileNumber = 0;
end
set @FileNumber = @FileNumber + 1;
update dbo._globalCounters
set fileDate = @FileNumberDate, fileCount = @FileNumber;
set @NextFileNum = convert(nvarchar(6), @FileNumberDate, 12) +
'-' +
RIGHT('00'+convert(nvarchar(2), @FileNumber),2);
execute sp_releaseapplock 'GetNewFileNumber_TRANSACTION'
commit transaction
print 'filenum:' + @NextFileNum
return @FileNumber;
END
GO
--Test the procedure
DECLARE @return_value int
DECLARE @out_value nvarchar(11)
EXEC @return_value = [dbo].[GetNewFileNumber] @out_value
SELECT 'Return Value' = @return_value, 'Out Value' = @out_value -- Out value always returns null?!
GO
最佳答案
调用时需要将其标记为输出参数
EXEC @return_value = [dbo].[GetNewFileNumber] @out_value OUTPUT
关于sql-server - 存储过程 OUT 参数始终返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505201/
我是一名优秀的程序员,十分优秀!