Как создавать имена столбцов / дескрипторы программно - PullRequest
1 голос
/ 29 октября 2008

В SQL Server дана таблица / представление, как можно сгенерировать определение таблицы / представления в виде:

C1 int,
C2 varchar (20),
С3 двухместный

Информация, необходимая для этого, содержится в мета-таблицах SQL Server, но есть ли стандартная возможность сценария / IDE для вывода данных, содержащихся в ней, в форме, описанной выше?

Для любопытных я хочу этого, так как мне нужно поддерживать несколько SP, которые содержат объекты Table (это форма временной таблицы, используемая SQL Server). Объекты таблиц должны соответствовать определению таблиц или представлений, уже имеющихся в базе данных - было бы намного проще, если бы эти определения можно было генерировать автоматически.

Ответы [ 4 ]

1 голос
/ 29 октября 2008

Вот пример перечисления имен и типов столбцов в таблице:

select 
    COLUMN_NAME, 
    COLUMN_DEFAULT, 
    IS_NULLABLE, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH, 
    NUMERIC_PRECISION, 
    NUMERIC_SCALE
from 
    INFORMATION_SCHEMA.COLUMNS
where 
    TABLE_NAME = 'YOUR_TABLE_NAME_HERE' 
order by 
    Ordinal_Position

Генерировать DDL из этой информации сложнее. Кажется, есть некоторые предложения на SQLTeam

0 голосов
/ 30 октября 2008

В этой публикации к другому вопросу у меня есть сценарий обратного инжиниринга БД, который будет выполнять определения таблиц, представлений, PK, UK и индексов, а также внешние ключи. Этот предназначен для SQL Server 2005 и является портом, который я изначально написал для SQL Server 2000. Если вам нужна версия SQL Server 2000, добавьте комментарий к этому сообщению, и я опубликую его здесь.

0 голосов
/ 30 октября 2008

Спасибо за ваши ответы. Да, я действительно хочу точную копию DDL, но я понял, что искажал именно то, что мне нужно. Это DDL, который создаст временную таблицу, которая будет соответствовать столбцам представления.

Я понял это, посмотрев на предложение Дакворса - что хорошо, но, к сожалению, не охватывает случай представления.

ВЫБРАТЬ ОПРЕДЕЛЕНИЕ ВИДА ИЗ INFORMATIONSCHEMA.VIEWS

... предоставит вам список столбцов в представлении и (при условии, что все столбцы в представлении получены непосредственно из таблицы) тогда можно будет использовать исправленную версию предложения Дакворса, чтобы собрать вместе соответствующие столбцы. DLL.

Я просто поражен, что не легче! Я ожидал, что кто-то скажет мне, что для этого существует хорошо установленная процедура, учитывая, что для объектов TABLE должны быть полностью определены все столбцы (а не то, как это делает Oracle, а именно: «дайте мне что-то похожее на таблицу X»). ».

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

0 голосов
/ 29 октября 2008

Если вы хотите дублировать определение таблицы, вы можете использовать:

select top 0
  *
into
  newtable
from
  mytable

Редактировать: Извините, просто перечитайте ваш вопрос, и понял, что это может не ответить на него. Не могли бы вы уточнить, что вам нужно, хотите ли вы точную копию определения таблицы или таблицу, содержащую информацию об определении таблицы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...