我以前看过一段代码,是通过显示SELECT语名和别的什么语句把一个数据库的值传入另一张表中

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

我以前看过一段代码,是通过显示select语名和别的什么语句把一个数据库的值传入另一张表中  
   
  有人知道吗?

· 网友精彩回答:

发表者:hdhai9451

你想說的是不是select   語句與insert   into   連在一起用?那就應該這樣寫  
   
  insert   into   ta(col1,col2,col3...)  
  select   col1,col2,col3...   from   tb1  
  union   all   select   col1,col2,col3...   from   tb2  
  .....  
   
  這是估計你的意思寫,不知道是否達到   你的要求?

发表者:libin_ftsafe

--创建表b,并将表a的数据插入表b中  
  select   *   into   表b   from   表   a  
   
  --将表a的数据插入已存在的表b  
  insert   into   表b   select   *   from   表

发表者:kulongge

楼上的两位已经应该可以了吧      
  我帮你顶下

发表者:qq454831

下面这个存储过程不是我写的,不过肯定好用,符合要求吧  
   
  alter   procedure   prdatagenerator  
  @chvdatabase   sysname,  
  @chvowner   sysname   =   dbo,  
  @chvtable   sysname,  
  @debug   int   =   0  
  /*   test:  
  exec   prdatagenerator   asset,   dbo,   equipment,   0  
  */  
   
  as  
  set   nocount   on  
  declare   @intcolcount   int,  
  @intcol   int,  
  @chvsql   varchar(8000),  
  @chvcolumnlist   varchar(8000),  
  @chvinsert   varchar(8000)  
   
  create   table   #tbl   (recid   int   identity(1,1),  
  string   varchar(8000),  
  nstring   nvarchar(4000))  
   
  insert   #tbl   (string)   values(   use     +   @chvdatabase   +     go   )  
   
  select   [column_name],   [ordinal_position],   --[column_default],    
  [is_nullable],   [data_type],   [character_maximum_length]   /*,    
  [character_octet_length],   [numeric_precision],   [numeric_precision_radix],    
  [numeric_scale],   [datetime_precision],   [character_set_catalog],    
  [character_set_schema],   [character_set_name],   [collation_catalog],    
  [collation_schema],   [collation_name],   [domain_catalog],    
  [domain_schema],   [domain_name]   */  
  into   #columns  
  from   [information_schema].[columns]  
  where     table_catalog   =   @chvdatabase  
  and   table_schema   =   @chvowner  
  and   table_name   =   @chvtable  
  order   by   [ordinal_position]  
   
  select   @intcolcount   =   @@rowcount  
   
  --   get   comma   -   delimited   list   of   column   names  
  select   @chvcolumnlist   =    
  select   @chvcolumnlist   =   @chvcolumnlist   +   column_name   +   ,  
  from   #columns  
  order   by   [ordinal_position]  
  set   @chvcolumnlist   =   left(@chvcolumnlist,   len(@chvcolumnlist)   -   1)  
   
  set   @chvinsert   =   insert     +   coalesce   (@chvdatabase   +   .,   )    
  +   @chvowner   +   .   +   @chvtable   +     (   +   @chvcolumnlist   +   )  
  values(    
   
   
  --   loop   through   rows  
   
   
   
  --   insert   statement  
  insert   into   #tbl   (string)  
  values   (@chvinsert)    
   
   
  --   loop   through   columns  
  set   @intcol   =   1  
  while   @intcol   <=   @intcolcount  
  begin  
   
  select   @chvsql   =   select   top   1    
  +   case   when   data_type   in   (varchar,   nvarchar,   datetime,   smalldatetime,   char,   nchar)   then       +    
  else    
  end  
  +   convert(varchar(8000),     +   column_name   +     )    
  +   case   when   data_type   in   (varchar,   nvarchar,   datetime,   smalldatetime,   char,   nchar)   then     +      
  else    
  end  
  +     from     +   coalesce   (@chvdatabase   +   .,   )   +   @chvowner   +   .   +   @chvtable  
  from   #columns  
  where   ordinal_position   =   @intcol  
   
  if   @debug   <>   0  
  select   @chvsql   [@chvsql]  
   
  insert   into   #tbl   (string)  
  exec   (@chvsql)  
  if   @intcol   <=   @intcolcount  
  insert   into   #tbl   (string)  
  values   (,)  
   
  set   @intcol   =   @intcol   +   1  
  end  
  --   finish   insert   values()  
  insert   into   #tbl   (string)  
  select   )  
   
   
     
  select   coalesce(string,   nstring)   [result]   from   #tbl  
  --select   *   from   #columns  
   
  drop   table   #tbl  
  drop   table   #columns  
   
  return   0  
   
   
   
 

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved