2
使用存储过程输出一个函数存储过程和函数返回意外的结果
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
?
您可以添加源为SP和功能的简化版本? – 2012-01-11 20:45:20
请发布重现问题的sp和函数的示例代码。 – 2012-01-11 20:45:52