Sql server SQL 2000函数-无法返回varchar

Sql server SQL 2000函数-无法返回varchar,sql-server,Sql Server,我目前正在处理一些旧的SQL 2000。我需要一个返回字符串的函数。就这样 ALTER FUNCTION [dbo].[tmp] ( @CurrentCheck VARCHAR(80) = '10161681' ) RETURNS VARCHAR(2000) AS BEGIN RETURN CAST('fred' AS VARCHAR(2000)); END 这将显示一条错误消息:42000-[SQL Server]将数据类型varcha

我目前正在处理一些旧的SQL 2000。我需要一个返回字符串的函数。就这样

    ALTER FUNCTION [dbo].[tmp] ( @CurrentCheck VARCHAR(80) = '10161681' )
    RETURNS VARCHAR(2000)
    AS
    BEGIN
        RETURN CAST('fred' AS VARCHAR(2000));
    END
这将显示一条错误消息:42000-[SQL Server]将数据类型varchar转换为int时出错

不确定int来自哪里。奇怪的是,如果我用int来代替“fred”,它就会工作。但我需要的是返回一个VARCHAR

    RETURN 'fred'
给出了相同的错误

    RETURN 314
很遗憾,这不是一个varchar,而是一个int。返回varchar行有什么问题吗

此外,如果我加入

    Declare @logid varchar(50);
    RETURN  @logid
它工作正常,返回一个空行

但是


再次导致它失败,并出现相同的int错误…

如何调用该函数?能否显示在SSMS或查询分析器中运行的产生此错误的完整代码?是否确定[dbo].[tmp]是一个函数,而不是一个过程?程序仅限于返回int.lol。好的,我明白了。Navicat正在按程序运行这些功能。谢谢格林和马丁,在你们两人中间我找到了答案。只是旧版本Navicat中的一个bug。
    Declare @logid varchar(50);
    SET @logid = 'fred'
    RETURN  @logid