1

我有这个存储过程,我想知道“如果存在”是否真的会比较 select 语句返回的值,或者它只会检查该条件是否可以执行,对不起这样一个愚蠢的问题,但我是 SQL 新手,

declare @m_ID_v int
set @m_ID_v = ( select ID_C from M_T where MName_C = @MName_parameter)

declare @g bit
if exists (select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable)
    set @g_v = 1
else
    set @g_variable = 0

我的选择语句

select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable

返回真或假,所以只想确定“如果存在”是否会像“如果”一样工作

4

2 回答 2

4

使用if exists不作为if. 它不检查返回的值是真还是假,它检查是否存在一个值。

如果您的查询始终返回一个值,则if exists将始终评估为真。

于 2012-10-15T09:22:03.387 回答
2

存在 (Transact-SQL)

指定一个子查询来测试是否存在行。

如果子查询包含任何行,则返回 TRUE。

于 2012-10-15T09:22:06.163 回答