Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Команда показывающая описание полей таблицы  [new]
dejavu1
Member

Откуда:
Сообщений: 2
Таковая существует вообще? Не могу найти (
Подскажите пожалуйста неопытному пользователю
24 июл 11, 12:17    [11018889]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
fn_listextendedproperty
24 июл 11, 13:26    [11018999]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
все зависит от того, что вы подразумеваете под "описанием полей таблицы".
Если структуру, то надо смотреть INFORMATION_SCHEMA views.
24 июл 11, 14:14    [11019082]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
dejavu1
Member

Откуда:
Сообщений: 2
Winnipuh,

Этот вопрос попался в тестах, есть подозрения насчет корректности их составления
24 июл 11, 14:32    [11019131]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
--110328 valkoch at gmail com
--Описания колонок Таблицы
create proc pShowDescription
@sTable sysname
as set nocount on begin try
--
--check for synonym
if exists(select * from sys.synonyms where name=@sTable)
 select @sTable=replace(replace(base_object_name,'[',''),']','') from sys.synonyms where name=@sTable
if exists(select * from sys.tables where name=@sTable)
 begin
 declare @Schema sysname select @Schema=table_schema from information_schema.tables where table_name=@sTable
 declare @Object int     select @Object=object_id(@sTable,'U')
 --temporaty table
 declare @tmp table (Pos int, column_name sysname, PK sysname, FK sysname, IX sysname, data_type sysname, column_default sysname, check_definition sysname, computed_definition sysname, ID sysname, is_nullable sysname)
 insert  @tmp 
 select
  ordinal_position,
  column_name,
  '',
  '',
  '',
  data_type+isnull('('+convert(varchar,character_octet_length)+')',''),
  replace(replace(isnull(substring(column_default,2,len(column_default)-2),''),'[',''),']',''),
  '',
  '',
  case when column_name=(select name from sys.columns where object_id=@Object and is_identity=1) then 'ID' else '' end,
  is_nullable
 from information_schema.columns
 where table_name=@sTable
 --indexes
 declare @ind table (column_name sysname)
 insert  @ind select min(name)
	from sys.index_columns II join
						sys.columns       CI   on II.object_id=CI.object_id
																												and CI.column_id=II.column_id
	where II.object_id=@Object
	group by index_id having count(*)=1
 update  @tmp set IX='IX' where column_name in (select column_name from @ind)
 --keys
 declare @key table (column_name sysname, constraint_name sysname)
 insert  @key select column_name, constraint_name from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where table_name=@sTable
 declare @sPrimary sysname
 select  @sPrimary=isnull((select name from sys.indexes where object_id=@Object and is_primary_key=1),'')
 update  @tmp set PK='PK' where column_name in (select column_name from @key where constraint_name= @sPrimary)
 update  @tmp set FK='FK' where column_name in (select column_name from @key where constraint_name<>@sPrimary) 
 --check
 declare @chk table (column_name sysname, definition sysname)
 insert  @chk select column_name, replace(replace(replace(replace(definition,'[',''),']',''),'(0)','0'),column_name,'') from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE  inf join sys.check_constraints sys on  inf.constraint_name=sys.name where table_name=@sTable
 update  @tmp set check_definition=definition from @tmp Tmp, @chk Chk where Tmp.column_name=Chk.column_name
 --computed
 declare @cmp table (column_name sysname, definition sysname)
 insert  @cmp select name, definition from sys.computed_columns where object_id=object_id(@sTable,'U')
 update  @tmp set computed_definition=replace(replace(replace(replace(definition,'[',''),']',''),'(0)','0'),'(2)','2') from @tmp Tmp, @cmp Cmp where Tmp.column_name=Cmp.column_name
 --Description 
 declare @dsc table (objname sysname, Dsc sysname)
 insert  @dsc SELECT objname, convert(sysname,value) FROM fn_listextendedproperty ('MS_Description', 'user', @Schema, 'table', @sTable,'column', null) where value is not null
 --вывод результата
 select 
  [Column]=column_name,
  [ID], 
  [PK],
  [FK],
  [IX],
  [Type]       =data_type,
  [N]          =case when is_nullable='YES' then 'x' else ' ' end,
  [Default]    =case when left(column_default,1)='(' and right(column_default,1)=')' then substring(column_default,2,len(column_default)-2) else column_default end,
  [Check]      =case when left(check_definition,1)='(' and right(check_definition,1)=')' then substring(check_definition,2,len(check_definition)-2) else check_definition end,
  [Computed]   =case when left(computed_definition,1)='(' and right(computed_definition,1)=')' then substring(computed_definition,2,len(computed_definition)-2) else computed_definition end,
  [Description]=isnull(Dsc,'')
 from @tmp Tmp left join @dsc Dsc on Tmp.column_name=Dsc.objname
 order by len(left(computed_definition,1)), PK desc, FK desc, Pos
 end
else
 print 'Таблицы не найдено!'
--
end try begin catch select error_message() end catch
go


Сообщение было отредактировано: 25 июл 11, 16:22
25 июл 11, 16:22    [11023916]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Valera Kochemasov,

как-то Вы вольно с квадратными скобками обращаетесь.
А если это часть имени была?
25 июл 11, 16:34    [11023988]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
Мой шеф, человек старой закалки, запрещает ипользовать в именах объектов какие-либо знаки или цифры. Я с ним согласен и настоятельно рекомендую это всем.
25 июл 11, 16:38    [11024012]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Valera Kochemasov
Я с ним согласен и настоятельно рекомендую это всем.
Сказал - как отрезал.
25 июл 11, 16:40    [11024032]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Valera Kochemasov
Мой шеф, человек старой закалки, запрещает ипользовать в именах объектов какие-либо знаки или цифры. Я с ним согласен и настоятельно рекомендую это всем.
То есть это была не ошибка, а продуманный код, для наказаиня?
25 июл 11, 16:44    [11024060]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Valera Kochemasov
Мой шеф, человек старой закалки, запрещает ипользовать в именах объектов какие-либо знаки или цифры. Я с ним согласен и настоятельно рекомендую это всем.
Про владельцев я вообще не спрашиваю - люди старой закалки их тоже не приемлют.
25 июл 11, 16:46    [11024074]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
Уговорили, не буду больше убирать скобки...
25 июл 11, 16:50    [11024095]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Valera Kochemasov,

По мне, так вообще сомнительна полезность оной хп.
25 июл 11, 16:53    [11024127]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
Ken@t

По мне, так вообще сомнительна полезность оной хп.

Напишите свою, если будет полезнее, то приму на вооружение.
25 июл 11, 16:58    [11024166]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Valera Kochemasov
Ken@t
По мне, так вообще сомнительна полезность оной хп.

Напишите свою, если будет полезнее, то приму на вооружение.


Вот смысла не вижу.

Для реинжиниринга - не подходит.
Для документирования - то же.
Для контроля схемы бд - опять, не то средство.

Какое предназначение вашей хп ?
25 июл 11, 17:03    [11024194]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
Ken@t
Valera Kochemasov
пропущено...

Напишите свою, если будет полезнее, то приму на вооружение.


Вот смысла не вижу.

Для реинжиниринга - не подходит.
Для документирования - то же.
Для контроля схемы бд - опять, не то средство.

Какое предназначение вашей хп ?

Так ведь человек спросил команду для описания полей таблицы, я ему и ответил. Вы что, за сюжетом не следите?
25 июл 11, 17:05    [11024203]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Valera Kochemasov
Ken@t
пропущено...


Вот смысла не вижу.

Для реинжиниринга - не подходит.
Для документирования - то же.
Для контроля схемы бд - опять, не то средство.

Какое предназначение вашей хп ?

Так ведь человек спросил команду для описания полей таблицы, я ему и ответил. Вы что, за сюжетом не следите?


Не надо кричать , как потерпевший.
25 июл 11, 17:31    [11024391]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Valera Kochemasov,

Сори .

ТС. спросил
25 июл 11, 17:32    [11024397]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
ТС. спросил.
1. Схему таблицы.
2. Дополнительные свойства.

Ваша ХП для 2 ну ни как не тянет, не ?
А по схеме , задал невинный вопрос - для каких целей это ваша ХП , может допилить её и пременять, воттолько не знаю где?
25 июл 11, 17:34    [11024410]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
iap
как-то Вы вольно с квадратными скобками обращаетесь.
А если это часть имени была?

В данном конкретном случае это не играет никакой роли, т.к. не приводит к какой-либо ошибке ввиду отсутствия обращения к именам.
25 июл 11, 18:54    [11024939]     Ответить | Цитировать Сообщить модератору
 Re: Команда показывающая описание полей таблицы  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Valera Kochemasov,

спасибо, стоящая вещь в готовом виде, взял на вооружение
26 июл 11, 15:14    [11028776]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить