方法1: 加入一个输入参数,代表一个类型,如@selType
  在过程中用if 或case 语句 根据@selType不同返回不同recordset 方法2:也可以将你要的字段合成一个字符串作为输入参数@selStr,如
‘ c1, c2, c3, c4 , f1’在过程中用 set @selStr=’select ’+@selStr+’  from yourtable’
然后Exec(@selStr) 即可

解决方案 »

  1.   

    to: hjhing(winding)方法1是個不錯的主意,只是我現在還不完全清楚對這個存儲過程的所有需求(系統在邊設計邊編碼中,我也沒辦法,老板要看到上一階段的結果后才知道下一階段的需求)
    所以基本上寫不出這個參數(不知道要哪些參數才是最合適的)方法2:好象用處不大,因為我想在存儲過程中就不要出現那些不用的字段,這樣才會使數據量小,否則僅僅是最后一句返回值,那只實際了目標的一半要求
      

  2.   

    你可以在参数中传入需要返回的字段名。
    例如:
    create proc p_test
    outfield varchar(100)
    as
    declare @cmd varchar(100)
    set @cmd = 'select f1,f2' + @outfield +' from t'
    exec(@cmd)
    gop_test ',f3,f4'
    p_test ',f5,f6'
    返回的就是不同的结果。
      

  3.   

    方法1的用法是,只是多加一个类型参数, 而现在不用管有多少这种类型。
    你要加一种的时候,就在过程中加入:
    if @selType=10 
    select c1, c2, c3, c4 , f1,d2 from ………即可。当需求增加时候,你就在加:
    if @selType=11 
    select c1, c2,c4 , f3,e2 from ………
    方法2同楼上一样的
         你需要返回哪些字段,就定义它们成@selStr即可。