在SQL Server中检索常量值的有效方法

时间:2013-08-20 18:15:15

标签: sql sql-server stored-procedures

我需要在数据库中存储一些常量,用于在SQL存储过程中进行计算。我用表来存储这些常量

ConstantName(nvarchar)        Value(int)

问题是有许多存储过程需要访问这些变量,我必须在这些存储过程中检索所有这些常量的值,这显然是多余的工作。有近50个常数。我认为必须有一个更好的方法,但我不知道一个。有人可以建议一个好方法吗?

2 个答案:

答案 0 :(得分:3)

您可以将每个常量定义为标量函数,返回硬编码值,例如

CREATE FUNCTION MY_INT_CONST()
RETURNS INT
AS
BEGIN
    RETURN 12345
END

然后您可以在所有SP的计算中使用它

SELECT dbo.MY_INT_CONST() * 2

答案 1 :(得分:2)

您可以创建一个标量值函数来执行“冗余”工作:

CREATE FUNCTION getConst( @constName nvarchar(255))
RETURNS INT
AS
BEGIN
    DECLARE @Value int
    SELECT @Value = Value FROM Constants WHERE ConstantName = @constName
    RETURN @Value
END

并使用SELECT getConst("MyName")

进行调用