不可以,case后面只能输出字符串,但是你可以这样写declare @c1 varchar(15) , @c2 varchar(12)
set @c1 = 10
set @c2 =''
select @c2 =case when @c1 =5 then  'print 1'
                 when @c1 =10 then  'print 2'  end
exec(@c2)

解决方案 »

  1.   

    如果要在判断后执行语句
    就要用
    if 条件
    begin
        语句
    end
    elseif 条件
    begin
        语句
    end
    ....
      

  2.   

    使用 IF...ELSE
    IF 语句用于条件的测试。结果流的控制取决于是否指定了可选的 ELSE 语句: 指定 IF 而无 ELSE 
    IF 语句取值为 TRUE 时,执行 IF 语句后的语句或语句块。IF 语句取值为 FALSE 时,跳过 IF 语句后的语句或语句块。指定 IF 并有 ELSE 
    IF 语句取值为 TRUE 时,执行 IF 语句后的语句或语句块。然后控制跳到 ELSE 语句后的语句或语句块之后的点。IF 语句取值为 FALSE 时,跳过 IF 语句后的语句或语句块,而执行 ELSE 语句后的语句或语句块。例如,如果存储过程一直保存事务中 @@ERROR 返回的错误代码,则在过程结尾可能有与下面语句相似的 IF 语句:IF (@ErrorSaveVariable <> 0)
    BEGIN
       PRINT 'Errors encountered, rolling back.'
       PRINT 'Last error encountered: ' +
          CAST(@ErrorSaveVariable AS VARCHAR(10))
       ROLLBACK
    END
    ELSE
    BEGIN
       PRINT 'No Errors encountered, committing.'
       COMMIT
    END
    RETURN @ErrorSaveVariable
      

  3.   

    示例
    A. 使用一个 IF...ELSE 块
    下面的示例显示带有语句块的 IF 条件。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15.USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
    BEGIN
       PRINT 'The following titles are excellent mod_cook books:'
       PRINT ' '
       SELECT SUBSTRING(title, 1, 35) AS Title
       FROM titles
       WHERE type = 'mod_cook' 
    END
    ELSE
       PRINT 'Average title price is more than $15.'下面是结果集:The following titles are excellent mod_cook books:
     
    Title                               
    ----------------------------------- 
    Silicon Valley Gastronomic Treats   
    The Gourmet Microwave               (2 row(s) affected)B. 使用多个 IF...ELSE 块
    下面的示例使用了两个 IF 块。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15。如果现代烹调书的平均价格高于 $15,则显示现代烹调书价格昂贵的语句。USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
    BEGIN
       PRINT 'The following titles are excellent mod_cook books:'
       PRINT ' '
       SELECT SUBSTRING(title, 1, 35) AS Title
       FROM titles
       WHERE type = 'mod_cook' 
    END
    ELSE
       IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
    BEGIN
       PRINT 'The following titles are expensive mod_cook books:'
       PRINT ' '
       SELECT SUBSTRING(title, 1, 35) AS Title
       FROM titles
       WHERE type = 'mod_cook' 
    END
      

  4.   

    只能用if …… else if  ^……  end 呀
      

  5.   

    elseif好像不是SQL2000的语法吧-_-光用if else做循环太累了
      

  6.   

    你可以在case后面跟上可执行的文字列比如'select * from table'然后再用exec(@c)来执行变量