SQL Server 中是否有常量这样的东西,我可以在数据库中的不同存储过程中引用它



我有这段代码,它是存储过程的一部分。我还有其他具有类似代码片段的存储过程。

    INSERT INTO dbo.UserTest
    (  
        AdminTestId,
        Sequence,
        TestStatusId              
    ) 
    VALUES
    (
        @AdminTestId,
        @SEQ ,
        1
    ) 

现在我刚刚意识到1的值应该是testStatusId的一个2。我一直在犯这些错误,因为我忘记了哪个数字是哪个数字。

有没有办法可以让我有一个可以引用的常量,该常量将设置在所有存储过程之外的一个位置?

理想情况下,我想做的是这样的事情。但我不想在每个存储过程的顶部声明 TestStatusId.Start 的值。

    INSERT INTO dbo.UserTest
    (  
        AdminTestId,
        Sequence,
        TestStatusId              
    ) 
    VALUES
    (
        @AdminTestId,
        @SEQ ,
        @TestStatsusId.Started
    ) 

全局值的上下文中没有可在存储过程中引用的常量的概念。您可以在存储过程中声明变量(尽管不是常量):DECLARE @variableName <VariableType> = <Value>,但不能在它们之外声明变量。

跨多个数据库对象访问值的最佳选择是创建包含全局值的表。然后,在存储过程中,可以使用 SELECT 语句为您检索值,或创建一个用户定义函数,该函数通过某个键(例如按名称)拉回值。

在典型的编程意义上没有"常量",但你正在数据库中工作;你的表充满了常量。 如果这对您来说是一个问题,您可以有一个表,该表在一列中包含数字标识符,在另一列中包含关键字表示形式。 或者,您可以有一个函数来为您执行此转换,并在存储过程中调用它。

最新更新