我的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。
我做错了什么?
答案 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)数据类型可以正常工作。