--根据名称查询产品
create proc yg_GetcpInfobyMc
(
@cpname varchar(100),
@qyname varchar(500),
@bmname varchar(500),
@khname varchar(500)
)
as
if(@bmname is null and @khname is null)
begin
begin
select语句
end
else if(@qyname is null and @khname is null)
begin
select语句
end
else if(@qyname is null and @bmname is null)
begin
select语句
end
else if(@khname is null and @qyname is null and @bmname is null)
begin
select语句
end
go查询不出结果,应该怎么改啊?

解决方案 »

  1.   

    应该先判断
    if(@khname is null and @qyname is null and @bmname is null)
      

  2.   

    整理如下if(@khname is null and @qyname is null and @bmname is null)
    begin
    select语句
    end
    else if(@bmname is null and @khname is null)
    begin
    begin
    select语句
    end
    else if(@qyname is null and @khname is null)
    begin
    select语句
    end
    else if(@qyname is null and @bmname is null)
    begin
    select语句
    end
    else 
    begin
    select语句
    end
      

  3.   

    null属于未知.
    空格不属于null.
      

  4.   

    -- try 
    create proc yg_GetcpInfobyMc
    (
    @cpname varchar(100),
    @qyname varchar(500),
    @bmname varchar(500),
    @khname varchar(500)
    )
    as
    if(@bmname is null and @khname is null and @cpname is not null and @qyname is not null)
    begin
    select语句
    endif(@qyname is null and @khname is null and @bmname is not null and @cpname is not null)
    begin
    select语句
    endif(@qyname is null and @bmname is null and @cpname is not null and @khname is not null)
    begin
    select语句
    endif(@khname is null and @qyname is null and @bmname is null and @cpname is not null)
    begin
    select语句
    end
    go
      

  5.   

    Yang_(扬帆破浪)的整理是正确的,多个begin而且逻辑错误
      

  6.   

    上面各位大大的我都试了,还是不行!我要的是根据if else里的条件,查询数据,即当@qyname,@bmname,@khname传入的值是null时。
      

  7.   

    多个begin是笔误,已经改正!
      

  8.   

    刚才是我的失误!问题已经解决!lwl0606(寒泉) 大大的方法有效!感谢lwl0606(寒泉) 大大!