Sql 返回意外结果的存储过程和函数
对函数的参数使用存储过程输出Sql 返回意外结果的存储过程和函数,sql,tsql,Sql,Tsql,对函数的参数使用存储过程输出 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 varcha
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使用两个参数integer进行转换,返回的字符数返回带前导零的整数的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?您的存储过程从未为输出参数@SeqNo赋值。您的存储过程从未为输出参数@SeqNo赋值。您可以为该SP和函数添加源代码的简化版本吗?请发布SP和函数的示例代码复制问题的函数。能否为该SP和函数添加源代码的简化版本?请发布复制问题的SP和函数的示例代码。宾果。谢谢我不知道我怎么会错过的,宾果。谢谢我不知道我怎么会错过。