想在存储过程中,写出类似:
Select t_id,use_age
if(param1 == 1)
{
,use_name
}
from temp_table怎样做成存储过程呢?
大家帮忙看一下。
还有,这算是那部分知识块?

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql='select t_id,use_age'+case when @param1=1 then ',use_name' else '' end+' from temp+table'
    exec(@sql)
      

  2.   

    create proc pr
    @param int
    as
    declare @str  varchar(50)
    begin
    if @param = 1
    set @str = ',use_name'
    else
    set @str = ''
    exec('
    select t_id,use_age'+@str+' from temp_table
    ')
    end
      

  3.   

    Select t_id,use_age ,
    use_name=case when param1 = 1 then use_name else '' end
    from temp_table  
      

  4.   

    Select t_id,use_age 
    if(param1 == 1) 

    ,use_name 

    from temp_table select t_id,use_age,Case param1 when 1 then use_name else null end from temp_table 
      

  5.   

    哦,看错了 param1是参数.
    用动态的SQL:create PROCEDURE MySel
    @param1  varchar
    as 
    declare @sql varchar(2000) 
    set @sql='select t_id,use_age ' if(@param1='1')
    begin
    set @sql=@sql+',use_name ' 
    end
    set @sql=@sql+'from temp_table '
    exec(@sql)
    go 
    应该算是SQL语法吧
      

  6.   

    我发现大家有的用case when then end,有的用if else
    这两个有什么区别吗??
    用那个比较好??
      

  7.   


    if else 我没有在查询语句中用到过。
    一般是用到接收的参数 判断这个参数,然后执行什么语句而
    case when then end ,是在语句中构成的。
    意思就是说,当 什么东西 等于什么的时候 显示什么,否则 显示什么