我需要在数据库中存储一些常量,用于在SQL存储过程中进行计算。我用表来存储这些常量
ConstantName(nvarchar) Value(int)
问题是有许多存储过程需要访问这些变量,我必须在这些存储过程中检索所有这些常量的值,这显然是多余的工作。有近50个常数。我认为必须有一个更好的方法,但我不知道一个。有人可以建议一个好方法吗?
答案 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")