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,有很多工具可以用来部署数据库,或者很多都是手动完成的。