【发布时间】:2012-10-15 08:54:36
【问题描述】:
我对 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... 并尝试解析它,则不会发生错误
编辑
我希望我的代码通过我的 select 语句检查返回值,因此“如果存在”并不是真正要寻找的,抱歉。
【问题讨论】:
-
您已经定义了一个名为
@g的变量,但分配给了一个名为@g_v或@g_variable的变量..... -
对不起,由于公司代码隐私,我更改了那里的名称,对不起,但也感谢您纠正我:)
-
当您说要检查返回值时,您要检查什么?你的意思是
IF ((SELECT x FROM y WHERE z = @v) = @testVariable)?目前你回复G_L_Column,但你没有说你想检查什么。另外,M_ID_Column是否是唯一的,允许您保证您的查询只返回一行? -
是的,它是独一无二的
标签: sql sql-server-2008