我可以声明一个局部变量不为空吗?

Mr.*_*ith 6 t-sql sql-server

在 T-SQL 中,我声明了一个用于某些查询的局部变量,如下所示:

DECLARE @var_last datetime;
SET @var_last = (SELECT TOP(1) col_date FROM tbl_dates ORDER BY col_date);
Run Code Online (Sandbox Code Playgroud)

在我正在测试的应用程序中,此查询返回 NULL 将是一个错误,并且如果查询返回崩溃错误,则是可取的。

我想设置@var_lastNOT NULL但语法...

DECLARE @var_last datetime NOT NULL;
Run Code Online (Sandbox Code Playgroud)

...是无效的。我可以对查询的返回值写一个简单的检查,看看它是否为 NULL,如果是错误,但我的问题是,是否不可能将局部变量声明为 NOT NULL?

Joe*_*ias 5

没错,根据 的文档DECLARE @local_variable,可从以下网址获得:http : //technet.microsoft.com/en-us/library/ms188927.aspx,它不接受NULL | NOT NULL参数——这些参数仅对列定义有效。

如果您想在返回 a 时停止执行NULL,则测试NULL并且,如果是,则RAISERROR;请参阅:http : //technet.microsoft.com/en-us/library/ms178592.aspx