我们如何将 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 )

它给出了输出 B!,这是错误的,

我应该得到 AD 作为输出

当我传递输入时

select GetNextSequenceCode_TEST ('AC')

它给了我正确的输出。即广告

如果我做错了什么,请纠正我。或者以错误的方式分配输入

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)