1

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

ConstantName(nvarchar)        Value(int)

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

4

2 回答 2

3

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

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

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

SELECT dbo.MY_INT_CONST() * 2
于 2013-08-20T18:55:20.717 回答
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")

于 2013-08-20T19:01:20.230 回答