在 SQL Server 中创建全局静态变量?
Posted
技术标签:
【中文标题】在 SQL Server 中创建全局静态变量?【英文标题】:Create a global static variable in SQL Server? 【发布时间】:2009-12-03 08:18:30 【问题描述】:有没有办法在 SQL Server 中创建一个全局变量,这样即使服务器重新启动它也会保持不变,所以我可以在函数中使用它?
我需要的例子:
DECLARE @@DefaultValue bit
除非我明确地这样做,否则不应删除此变量。
【问题讨论】:
【参考方案1】:我想这对我来说是最好的:
CREATE FUNCTION [dbo].[fn_GetDefaultPercent]()
RETURNS decimal(5,4)
AS
BEGIN
RETURN 1.0000
END
【讨论】:
这个变量如何? @CompanyDroneFromSector7G:你可以使用它variable-esque,就像在条件句中一样,即使它只是一个不存在的功能的变通方法。 @dakab 然后是一个常数,我想这可能会成为解决方案的一部分。【参考方案2】:你可以看看这样的东西
"Global variables" in SQL Server
【讨论】:
全局变量根本不是持久化的。 如何在查询中使用这些全局变量? 这作为用户定义的函数比存储过程更好,特别是在查询中使用,否则您必须为每个使用的值添加和分配一个变量。此外,这些前缀也不是一个好主意: • sqlperformance.com/2012/10/t-sql-queries/sp_prefix • dba.stackexchange.com/questions/154251/… • github.com/red-gate/SQL-code-smells#naming • xkcd.com/645【参考方案3】:不是全局变量。
您可以定义一个全局 UDF,就像您可以创建一个“系统”存储过程(在 master 中启动“sp”),但我还没有尝试过。
注意:
即使DECLARE @@DefaultValue bit
实际上也是本地的:
@
表示局部变量,标识符为@DefaultValue
这不是真正的全球性:从另一个查询窗口 2 中尝试 SELECT @@DefaultValue
【讨论】:
【参考方案4】:我知道有人回答,但只是为了好玩:)
一个有 2 列的表格怎么样:
GLB_VARIABLES:
GLB_VAR_NAME varchar(100) PRIMARY KEY,
GLB_VAR_VALUE varchar(100)
【讨论】:
Astander 的回答链接到如何稳健地执行此类操作以及如何实际使用它们的示例。以上是关于在 SQL Server 中创建全局静态变量?的主要内容,如果未能解决你的问题,请参考以下文章