【问题标题】:Returning a Nvarchar from a function When the Return value is 0 then other numeric value从函数返回 Nvarchar 当返回值为 0 时,则为其他数值
【发布时间】:2018-05-24 12:46:36
【问题描述】:

我有一个使用 ID 时从表中返回值的函数

当数据库中的值等于“00”时,它返回值为 0

这就是函数

ALTER FUNCTION [dbo].[GetSystemParameter]
(
    @Parameter nvarchar(50)
)

RETURNS nvarchar AS
BEGIN

    DECLARE @return nvarchar(50)


        SELECT @return = [ParameterValue] FROM dbo.[SystemParameters] WHERE [ParameterName] = @Parameter

RETURN @return

END

选择值时 Select dbo.GetSystemParameter(<ParameterName>)

返回 0 而不是 '00' 如何获得返回 00 而不是 0 的值

提前为您服务 詹姆斯

【问题讨论】:

  • 标记您的 DBMS。 ParameterValue 是什么数据类型?
  • RETURNS nvarchar改成RETURNS nvarchar(<a sensible length>)?
  • ParameterValue 参数为 NvarChar(50)
  • 感谢 Richard,现在按预期工作

标签: sql-server tsql stored-functions


【解决方案1】:

没有长度的字符类型使用默认长度。您已声明您的存储过程返回nvarchar(1)。您应该始终在 SQL Server 中对这些类型使用长度:

ALTER FUNCTION [dbo].[GetSystemParameter] (
    @Parameter nvarchar(50)
)
RETURNS nvarchar(50) AS
BEGIN
    DECLARE @return nvarchar(50);

    SELECT @return = [ParameterValue]
    FROM dbo.[SystemParameters]
    WHERE [ParameterName] = @Parameter;

    RETURN @return;
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多