函数返回转换失败

时间:2019-07-16 17:49:08

标签: sql sql-server tsql

我的CHOOSE有一个非常简单的功能,例如:

CREATE FUNCTION udf_NoteType_Get 
(
    @NoteType INT
)
RETURNS VARCHAR(255)
AS
BEGIN
    DECLARE @Result VARCHAR(255)

    SELECT @Result = (SELECT CHOOSE(@NoteType, 'NoteType1','NoteType2'))

    RETURN @Result

END
GO

如您所见,我返回了一个varchar,因此我可以从中进行选择:

SELECT
                 [dbo].[udf_NoteType_Get](1) AS [Note]

这会抛出错误:

  

将varchar值'NoteType1'转换为时转换失败   数据类型为int。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您没有做错任何事情。我认为,您已经更正了它。我认为该错误是抛出错误的,因为您最初将@Result声明为INT:

CREATE FUNCTION udf_NoteType_Get 
(
    @NoteType INT
)
RETURNS VARCHAR(255)
AS
BEGIN
    DECLARE @Result int
    SELECT @Result = (SELECT CHOOSE(@NoteType, 'NoteType1','NoteType2'))
    RETURN @Result
END
GO

SELECT [dbo].[udf_NoteType_Get](1) AS [Note]

这将引发错误。否则,将@Result声明为VARCHAR(255)数据类型可以正常工作。