我需要在数据库中存储一些常量,这些常量用于在 SQL 存储过程中进行计算。我用一张表来存储这些常量
ConstantName(nvarchar) Value(int)
问题是有许多存储过程需要访问这些变量,而我必须在这些存储过程中检索所有这些常量的值,这显然是多余的工作。有近 50 个常数。我认为必须有更好的方法来做到这一点,但我不知道。有人可以建议一个不错的方法吗?
我需要在数据库中存储一些常量,这些常量用于在 SQL 存储过程中进行计算。我用一张表来存储这些常量
ConstantName(nvarchar) Value(int)
问题是有许多存储过程需要访问这些变量,而我必须在这些存储过程中检索所有这些常量的值,这显然是多余的工作。有近 50 个常数。我认为必须有更好的方法来做到这一点,但我不知道。有人可以建议一个不错的方法吗?
您可以将每个常量定义为标量函数,返回硬编码值,例如
CREATE FUNCTION MY_INT_CONST()
RETURNS INT
AS
BEGIN
RETURN 12345
END
然后您可以在所有 SP 的计算中使用它
SELECT dbo.MY_INT_CONST() * 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")