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文

select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable

true または false を返すので、「if exists」が「if」として機能するかどうかを確認したいだけです

4

2 に答える 2

4

を使用しif existsても動作しませんif。返された値が true か false かをチェックするのではなく、値が存在するかどうかをチェックします。

クエリが常に値を返す場合、if existsは常に true と評価されます。

于 2012-10-15T09:22:03.387 に答える
2

EXISTS (Transact-SQL)

行の存在をテストするサブクエリを指定します。

サブクエリに行が含まれている場合は TRUE を返します。

于 2012-10-15T09:22:06.163 に答える