求助:以动态sql语句
CREATE   TABLE   [dbo].[p_result]   ( 
 	[num]   [int]   IDENTITY   (1,   1)   NOT   NULL   , 
 	[pro_date]   [smalldatetime]   NOT   NULL   , 
 	[ban]   [char]   (1)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   , 
 	[s01]   [int]   NULL   , 
 	[s02]   [int]   NULL   , 
 	[s03]   [int]   NULL   , 
 	[s04]   [int]   NULL   , 
 	[s05]   [int]   NULL   , 
 	[s06]   [int]   NULL   , 
 	[s07]   [int]   NULL   , 
 	[s08]   [int]   NULL   , 
 	[s09]   [int]   NULL   , 
 	[s10]   [int]   NULL   , 
 	[s11]   [int]   NULL   , 
 	[s12]   [int]   NULL   , 
 	[s13]   [int]   NULL   , 
 	[s14]   [int]   NULL    
 )   ON   [PRIMARY] 
 GO 
 以上结构的表,但表中以s开头的列的列数不能确定(需要使用动态sql语句),该表的行数也不能确定,现在我想依次得到以s开头的列每一个值。 
 -------------------------------------------- 
 我的已有部分程序如下,但是其中的动态sql语句能通过编译,但执行时会提示有语法错误。 
 希望大家帮忙看看 
 declare   @SS   varchar(10),@val   int,@S   nvarchar(1000),@pa   nvarchar(20),@vv   int,@i   int,@k   int,@h_s   int,@l_s   int 
 Select   @l_s=Count(*)   From   sysobjects,syscolumns   where   sysobjects.id   =   syscolumns.id   and 
 sysobjects.name   =    'p_result ' 
 select   @h_s=count(*)   from   p_result 
 select   @k=4 
 while   @k <=@l_s 
 begin 
          if   @k <=13 
                   set   @SS= 's0 '+convert(varchar(1),@k) 
          else 
                   set   @SS= 's '+convert(varchar(2),@k) 
          set   @i=1 
          while   @i <=@h_s 
                   begin 
                         --(下面的动态语句能通过编译,但执行时会提示: 'p_result '   附近有语法错误。希望大家帮忙看看)--- 
                         select   @pa= '@val   int   out ' 
                         set   @S= 'select   @val= '+@SS+ 'from   p_result   where   num= '+convert(varchar(2),@i) 
                         execute         sp_executesql         @S,@pa,@vv   out    
                         ----------------------------------------------------- 
                         select   @vv   --得到目标值 
                         set   @i=@i+1 
                   end 
 set   @k=@k+1 
 end        
 谢了
------解决方案--------------------/* 
 set @S= 'select @val= '+@SS+ 'from p_result where num= '+convert(varchar(2),@i) 
 */ 
 set @S= 'select @val= '+@SS+ ' from p_result where num= '+convert(varchar(2),@i) 
------解决方案--------------------整个语句楼上想要怎样的功能,贴出来的语句漏点不少... 
    if @k <=13 
       set @SS= 's0 '+convert(varchar(1),@k) 
    else 
       set @SS= 's '+convert(varchar(2),@k) 
 比一段是取列名的判断有问题,转换同样有问题 
 改为 
    if @k <10 
       set @SS= 's0