SQLSREVER如何创建和使用动态游标[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 pbdesigner 的 blog

      select @column_name = right(@column_name,len(@column_name) - charindex('.',@column_name))
      end
   else
      begin
      select @table_name = @table_list
      end

   ---栏位出现'*'
   if charindex('*',@column_name) > 0
      begin
      select @column_name = ''
      select @loop_seq = 1
      ---取栏位个数
      select @column_count = count(*)
        from syscolumns
       where id = object_id(@table_name)
      while @loop_seq <= @column_count
         begin
         ---取栏位名称,栏位类型,长度,精度,小数位
         select @column_name_temp = syscolumns.name,
                @column_type_temp = lower(systypes.name),
                @column_length_temp = syscolumns.length,
                @column_xprec_temp = syscolumns.xprec,
                @column_xscale_temp = syscolumns.xscale
           from syscolumns,systypes
          where syscolumns.id = object_id(@table_name) and
                syscolumns.colid = @loop_seq and
                syscolumns.xusertype = systypes.xusertype
         ---形成栏位语法表达式
         select @column_syntax_temp = case when @column_type_temp in ('datetime','image','int') then @column_name_temp + ' ' + @column_type_temp
                                           when @column_type_temp in ('binary','bit','char','varchar') then @column_name_temp + ' ' + @column_type_temp + '('+convert(varchar(10),@column_length_temp) + ')'
                                           else @column_name_temp + ' ' + @column_type_temp + '('+convert(varchar(10),@column_xprec_temp) + ',' + convert(varchar(10),@column_xscale_temp) + ')'
                                      end
         select @column_syntax = @column_syntax + @column_syntax_temp + ','
         select @loop_seq = @loop_seq + 1
         end
      end
   else
      begin
      ---取栏位名称
      select @column_name_temp = @column_name
      ---取栏位类型,长度,精度,小数位
      select @column_type_temp = lower(systypes.name),
             @column_length_temp = isnull(syscolumns.length,0),
             @column_xprec_temp = isnull(syscolumns.xprec,0),
             @column_xscale_temp = isnull(syscolumns.xscale,0)
        from syscolumns,systypes
       where syscolumns.id = object_id(@table_name) and
             syscolumns.name = @column_name_temp and
             syscolumns.xusertype = systypes.xusertype
      ---形成栏位语法表达式

本文关键:动态游标
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top