Использование вывода хранимой процедуры для параметра функции
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
?