2

私はSQLクエリに比較的慣れていませんが、以下に述べるように宣言された変数の値を取得しようとしてエラーが発生するこのストアドプロシージャを持っています.

最初の行は 20 です。

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

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

私が得る例外:

メッセージ 4145、レベル 15、状態 1、プロシージャ GetID、行 20
'set' の近くで、条件が予想されるコンテキストで指定された非ブール型の式。メッセージ 156、レベル 15、状態 1、プロシージャ GetID、行 21 キーワード「else」付近の構文が正しくありません。

削除declare @g...して解析しようとしても、エラーは発生しません

編集

コードでselectステートメントによって返された値をチェックしたいので、「存在する場合」は実際には探しているものではありません。申し訳ありません。

4

3 に答える 3

2

存在する場合は使用してみてください:

declare @g_v 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_v = 0
于 2012-10-15T08:57:03.617 に答える
1

言えない

 if (select ...

ifステートメント内で何かを他のものと比較するか、次のようなブール関数を使用する必要がありますexists

于 2012-10-15T08:59:28.513 に答える
1
declare @m_ID_v int
set @m_ID_v = ( select ID_C from M_T where MName_C = @MName_parameter)

declare @g bit
if ((select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable) = value )
    set @g_v = 1
else
    set @g_variable = 0
于 2012-10-15T09:02:03.777 に答える