CREATE PROCEDURE [Class_delete]
             (
@Code  [varchar](12),
             @ReValue  [bit] output
             )
AS 
if (select count(*) from Class Where left(Code,len(@Code))=@Code and Code<>@Code)>0 
      SET @ReValue=0
ELSE
    DELETE Class 
    WHERE 
( [Code]  = @Code
)
    SET @ReValue=1
GO我是想让它如果存在有下级目录的话(即left(Code,len(@Code))=@Code and Code<>@Code),@ReValue就返回0,否则否回1,例如
code   name1
50     aa
5010   aa10
5020   aa20
...
当@Code=50时,我要@ReValue=0但是我试了N多次,始终不能返回0,为什么?请帮忙,谢谢!

解决方案 »

  1.   

    go前面加句
    return  @ReValue;
    看行么?
      

  2.   

    if (select count(*) from Class Where left(Code,len(@Code))=@Code and Code<>@Code)>0 
          SET @ReValue=0
    ELSE
      BEGIN
        DELETE Class 
        WHERE 
    ( [Code]  = @Code
    )
        SET @ReValue=1
      END
    GO====
    狗年旺旺
      

  3.   

    IF(...)
      begin
         ......
         SET @ReValue=0
      end
    ELSE
      begin
       ......
       SET @ReValue=1
      end这样才对嘛
      

  4.   

    if (select count(*) from Class Where left(Code,len(@Code))=@Code and Code<>@Code)>0 
          SET @ReValue=0
    ELSE
    --一定要begin 和end来包含执行块哦,否则只是运行乐delete语句,没有执行set语句的,那么就永远返回1了,够详细了吧
      BEGIN
        DELETE Class 
        WHERE 
    ( [Code]  = @Code
    )
        SET @ReValue=1
      END
    GO====
    狗年旺旺
      

  5.   

    DELETE Class 
        WHERE 
    ( [Code]  = @Code
    )
     这个还需要吗?
      

  6.   

    delete from where Node like '05%'这样可以删除05下所有的子节点.