逻辑基于具有BIT数据类型的标量函数的输出

时间:2017-12-17 00:26:44

标签: sql-server

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

DECLARE @DebugLogging BIT = dbo.fnIsDebugLoggingEnabled();

IF (@DebugLogging = 1) 
BEGIN
   -- some verbose logging information here...
END

基于是否启用调试日志记录,这是标量函数dbo.fnIsDebugLoggingEnabled()给出的输出。

我检查了该功能的创建脚本,我认为它总会返回0.也许我错了。有人可以检查我是否正确思考?

我在想 - >为什么有人会为永远不会发生的情况做出努力?

该功能的脚本是:

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

我跑了select dbo.fnIsDebugLoggingEnabled(),确实返回了0。

1 个答案:

答案 0 :(得分:1)

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

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