|
|
|
Как полегче создать таблицу В со структурой как в таблице А
|
|||
|---|---|---|---|
|
#18+
??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:05 |
|
||
|
Как полегче создать таблицу В со структурой как в таблице А
|
|||
|---|---|---|---|
|
#18+
SELECT * INTO B FROM A WHERE 1<>1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 13:12 |
|
||
|
Как полегче создать таблицу В со структурой как в таблице А
|
|||
|---|---|---|---|
|
#18+
-- Напрягся и написал функцию. Можете попробовать. CREATE FUNCTION f_TabAsTab -- Оператор создания временной таблицы со структурой указанной. (@TAB_NAME sysname, -- Имя таблицы: -- наличие двух предваряющих -- символов ## определяет -- глобальную таблицу, иначе - -- локальную @COL_LIST varchar(500)) -- Список невключаемых столбцов, -- каждый из которых обрамляется -- скобками [ ] RETURNS varchar(3000) -- Оператор AS BEGIN declare @RES varchar(3000), @NC sysname, @I int, @R int, @IDT int select @TAB_NAME=replace(@TAB_NAME,' ',''),@I=datalength(@TAB_NAME), @COL_LIST=replace(@COL_LIST,' ',''),@R=0 if @I = 0 RETURN NULL if substring(@TAB_NAME,1,1) = '#' select @R=@R+1 if substring(@TAB_NAME,2,1) = '#' select @R=@R+1 select @I=@I-@R if @I = 0 RETURN NULL if @R > 0 select @TAB_NAME=substring(@TAB_NAME,@R+1,@I) select @IDT=Object_Id(@TAB_NAME) if @IDT is NULL RETURN NULL select @RES='create table [#'+case when @R=2 then '#' else '' end+ @TAB_NAME+'] ('+char(13),@R=NULL select @RES=@RES+' ['+name+'] ['+type_name(xusertype)+']'+ rtrim(case when type_name(xusertype) in ('varchar','char','decimal', 'numeric','nchar','nvarchar','binary','varbinary') then '('+convert (varchar(6),ColumnProperty(id,name,'precision'))+ case when isnull(OdbcScale(xtype,xscale),0)=0 then ')' else ','+convert(varchar(2),OdbcScale(xtype,xscale))+')' end else '' end)+ case when type_name(xusertype) in ('varchar','char','text', 'ntext','nchar','nvarchar') then ' collate database_default' else '' end+ case when ColumnProperty(@IDT,name,'IsIdentity')=0 then '' else ' identity('+convert(varchar(4,IDENT_SEED(@TAB_NAME))+ ','+convert(varchar(4,IDENT_INCR (@TAB_NAME))+')' end+' '+ case when isnullable=0 then 'NOT NULL' else 'NULL' end+','+ char(13) from syscolumns where id = @IDT and number = 0 and isnull(charindex('['+name+']',@COL_LIST),0) = 0 order by colid select @R=indid from sysindexes where id = @IDT and indid > 0 and indid < 255 and status & 64 = 0 and status & 2048 != 0 if @R is not NULL begin select @RES=@RES+' Primary Key (['+index_col(@TAB_NAME,@R,1)+']', @I=2,@NC=index_col(@TAB_NAME,@R,2) while @NC is not NULL select @RES=@RES+',['+@NC+']',@I=@I+1,@NC=index_col(@TAB_NAME,@R,@I) select @RES=@RES+'))'+char(13) end else select @RES=substring(@RES,1,datalength(@RES)-2)+')'+char(13) RETURN @RES END -- #### (c) "PolySystem" 11.03.01 ############################## GO -- Вызов --select dbo.f_TabAsTab('#ARM',null) [Результат] -- Результат ------------------------------------------------------- --create table [#ARM] ( -- [N_ARM] [tinyint] NOT NULL, -- [NAM_ARM] [varchar](30) collate database_default NULL, -- [PR_MENU] [bit] NOT NULL, -- Primary Key ([N_ARM])) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2002, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3473&tid=1822642]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
19ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 282ms |

| 0 / 0 |
