帮我看一下这个存储过程,我写的这个运行出来没有效果,不知道是存储过程哪里错了。
create PROCEDURE [dbo].[UP_GetListFen]
@guanli_flag int
 AS 
if @guanli_flag != 0 
begin
SELECT 
[guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits]
 FROM guanli where [guanli_flag]=@guanli_flag
end
else
begin
    SELECT 
[guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits]
 FROM guanli where [guanli_flag] not in (0,1,2,3)
end 

解决方案 »

  1.   

    create PROCEDURE [dbo].[UP_GetListFen] 
    @guanli_flag int 
    AS 
    begin --少了.
    if @guanli_flag <> 0 
       begin 
         SELECT 
         [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
         FROM guanli where [guanli_flag]=@guanli_flag 
       end 
    else 
       begin 
         SELECT 
         [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
         FROM guanli where [guanli_flag] not in (0,1,2,3) 
       end 
    end--少了.
      

  2.   

    create PROCEDURE [dbo].[UP_GetListFen] 
    @guanli_flag int 
    AS 
    begin
    if @guanli_flag != 0 
    begin 
    SELECT 
    [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
    FROM guanli where [guanli_flag]=@guanli_flag 
    end 
    else 
    begin 
         SELECT 
    [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
    FROM guanli where [guanli_flag] not in (0,1,2,3) 
    end 
    end
      

  3.   

    --如果是单句sql语句,可以不要begin end
    create PROCEDURE [dbo].[UP_GetListFen] 
    @guanli_flag int 
    AS 
    begin --少了.
    if @guanli_flag <> 0 
         SELECT 
         [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
         FROM guanli where [guanli_flag]=@guanli_flag 
    else 
         SELECT 
         [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits] 
         FROM guanli where [guanli_flag] not in (0,1,2,3) 
    end--少了.
      

  4.   

    create PROCEDURE [dbo].[UP_GetListFen]
    @guanli_flag int
    AS
    SELECT
    [guanli_id],[guanli_name],[guanli_pwd],[guanli_flag],[guanli_stime],[guanli_ltime],[guanli_hits]
    FROM guanli where 
    case when @guanli_flag=0 then [guanli_flag]>3
    else [guanli_flag]=@guanli_flag end 
      

  5.   

    两个where互相矛盾
      

  6.   

    if 外层少了begin end
      

  7.   

    把第一行 create PROCEDURE [dbo].[UP_GetListFen] 
    改成 alter PROCEDURE [dbo].[UP_GetListFen] 
    然后才可以调用存储过程、、、