create  proc P             @bMaterialJz bit Output,
             @bLockMaterial bit Output,
             @bLockDeposit bit Output
     
AS  select case ISNULL(bMaterialJz, 0) 
           when 0 then set @bMaterialJz = 0   
           when 1 then set @bMaterialJz = 1  
         end 
    from control 
   where iMonth=Month(getdate())  select case ISNULL(bLockMaterial, 0) 
           when 0 then set @bLockMaterial = 0   
           when 1 then set @bLockMaterial = 1    
         end,
         case ISNULL(bLockDeposit, 0) 
           when 0 then set @bLockDeposit = 0  
           when 1 then set @bLockDeposit = 1    
         end
    from lockstate GO老是报 set , when , end  这一块有错,应该如何写?

解决方案 »

  1.   

    --syntax errorcreate  proc P             @bMaterialJz bit Output,
                 @bLockMaterial bit Output,
                 @bLockDeposit bit Output
         
    ASselect @bMaterialJz=case ISNULL(bMaterialJz, 0) 
               when 0 then 0   
               when 1 then 1  
             end 
        from control 
       where iMonth=Month(getdate())  select @bLockMaterial=case ISNULL(bLockMaterial, 0) 
               when 0 then 0   
               when 1 then 1    
             end,
             @bLockDeposit=case ISNULL(bLockDeposit, 0) 
               when 0 then 0  
               when 1 then 1    
             end
        from lockstate GO
      

  2.   

    case when 里面不应该有set
     并且如果你给变量附值case when 也做不到啊
      

  3.   

    --but why notselect @bMaterialJz=case ISNULL(bMaterialJz, 0) 
               when 0 then 0   
               when 1 then 1  
             end 
        from control 
       where iMonth=Month(getdate())--→select @bMaterialJz=isnull(bMaterialJz,0)
        from control 
       where iMonth=Month(getdate())
      

  4.   

    还是报错,  when 有语法错