Sql server 基于位数据类型标量函数输出的逻辑

Sql server 基于位数据类型标量函数输出的逻辑,sql-server,Sql Server,我遇到了一个执行以下操作的存储过程: DECLARE @DebugLogging BIT = dbo.fnIsDebugLoggingEnabled(); IF (@DebugLogging = 1) BEGIN -- some verbose logging information here... END 基于是否启用调试日志记录,这是标量函数dbo.fnisdebugloggingabled()给出的输出 我检查了该函数的创建脚本,我认为它将始终返回0。也许我错了。有人能检查一下

我遇到了一个执行以下操作的存储过程:

DECLARE @DebugLogging BIT = dbo.fnIsDebugLoggingEnabled();

IF (@DebugLogging = 1) 
BEGIN
   -- some verbose logging information here...
END
基于是否启用调试日志记录,这是标量函数
dbo.fnisdebugloggingabled()
给出的输出

我检查了该函数的创建脚本,我认为它将始终返回0。也许我错了。有人能检查一下我的思维是否正确吗

我在想-->为什么会有人为了一个永远不会发生的情况而努力去做一些事情

函数的脚本为:

CREATE FUNCTION [dbo].[fnIsDebugLoggingEnabled]() 
RETURNS BIT 
AS  
BEGIN 
   RETURN 0; 
END 

我运行了
选择dbo.fnisdebuglogginenabled()
,它确实返回了0。

您的观察是正确的;返回值将始终为零,因此不会发生详细日志记录


我无法解释开发人员为什么选择以这种方式实现调试标志,但这可能是一种部署选项,其中根据选择创建不同版本的函数。就个人而言,我会将这样的可配置值存储在一个表中。

部署选项?是否有任何工具可以使用这些脚本创建SQL对象,SQL开发人员可以使用这些脚本创建类似的对象?你能给我举个例子吗?@SunMan,有很多工具可以用来部署数据库,或者很多都是手动完成的。