将存储过程输出用于函数的参数
DECLARE @SeqNo int;
DECLARE @CharNumber varchar(10);
EXEC dbo.sp_GetNextCounter 'ITEMTYPE', @SeqNo OUTPUT;
EXEC @CharNumber=dbo.rf_f_CIntToChar @SeqNo, 6;
SELECT @CharNumber;
存储过程sp_GetNextCounter
有一个名为SeqNo
的整数输出。
存储过程:
@param0 varchar(12),
@SeqNo INT OUTPUT
AS
BEGIN
IF (@param0 IS NOT NULL)
BEGIN
set nocount on
DECLARE @reqseqno INT
SELECT @reqseqno = CounterValue FROM Counters WHERE CounterName = @param0
UPDATE Counters SET CounterValue = @reqseqno + 1 WHERE CounterName = @param0
SELECT @reqseqno AS 'SeqNo'
END
END
GO
函数dbo.rf_f_CIntToChar
有两个参数(要转换的整数,要返回的字符数)返回带有前导零的整数的varchar
版本。
功能:
(@intVal int, @intLen int)
RETURNS varchar(10)
WITH EXEC AS CALLER
AS
BEGIN
IF @intlen > 20 SET @intlen = 20
IF @intlen < LEN(@intVal) RETURN RIGHT(CONVERT(varchar(10), @intVal), @intlen)
RETURN REPLICATE('0', @intLen - LEN(@intVal)) + CONVERT(varchar(10), @intVal)
END
GO
存储过程和函数在单独使用时都应按原样运行。
为什么上述查询返回SeqNo
而不是CharNumber
?
答案 0 :(得分:4)
您的存储过程从不为输出参数@SeqNo