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 行
在预期条件的上下文中指定的非布尔类型表达式,靠近“设置”。消息 156,级别 15,状态 1,过程 GetID,第 21 行关键字“else”附近的语法不正确。

现在,如果我删除declare @g...并尝试解析它,则不会发生错误

编辑

我希望我的代码通过我的选择语句检查返回的值,所以“如果存在”并不是真正要寻找的,抱歉。

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 回答