如何解决我们如何将 VarChar 输入传递给 SQL 函数?
我的表“LoadData”如下:
Sequence_Code | ID | Current_Year | Record_Date | 状态 |
---|---|---|---|---|
17AA | 310001 | 2017 | 2017-01-01 | S |
18AB | 310002 | 2018 | 2018-02-22 | S |
19AC | 310003 | 2019 | 2019-02-10 | S |
NULL | 310004 | 2019 | 2019-02-20 | A |
我编写了一个 sql 函数“GetNextSequenceCode_TEST”,它生成下一个序列代码, 例如:如果我们给'AB'作为输入,该函数将生成'AC'作为输出。
功能如下:
CREATE FUNCTION [dbo].[GetNextSequenceCode_TEST]
(@LastSeqAlphabet varchar(100))
RETURNS varchar(100)
AS
BEGIN
DECLARE @fPart varchar(100),@lChar CHAR(1);
IF(@LastSeqAlphabet IS NULL OR @LastSeqAlphabet = '')
RETURN 'A';
SELECT @fPart = LEFT(@LastSeqAlphabet,LEN(@LastSeqAlphabet) - 1);
SELECT @lChar = RIGHT(@LastSeqAlphabet,1);
IF(@lChar = 'Z')
RETURN (SELECT [dbo].[GetNextSequenceCode_TEST](@fPart)) + 'A';
RETURN @fPart + CHAR(ASCII(@lChar)+1);
END
Sequence_Code 是字母数字,所以我应该考虑 Sequence_Code 的最后两个字符。 请看下面的代码:
DECLARE @SeQCode varchar(100)
SELECT top 1 @SeQCode = SubString(Sequence_Code,3,4)
FROM LoadData where ID=310003
print @SeQCode
这里我得到的变量@SeQCode 的值是 AC。
但是当我将此变量发送到我的函数时,如下所示:
select GetNextSequenceCode_TEST (@SeQCode )
我应该得到 AD 作为输出。
当我传递输入时
select GetNextSequenceCode_TEST ('AC')
它给了我正确的输出。即广告
如果我做错了什么,请纠正我。或者以错误的方式分配输入
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。