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