如何以编程方式创建列名称/描述符

时间:2008-10-29 04:01:33

标签: sql-server

在给定表/视图的SQL Server中,如何在表单中生成表/视图的定义:

  

C1 int,
  C2 varchar(20),
  C3双

执行此操作所需的信息包含在SQL Server的元表中,但是是否有标准的脚本/ IDE设备以上述形式输出其中包含的数据?

对于好奇我想要这个,因为我必须维护一些包含Table对象的SP(这是SQL Server使用的临时表的一种形式)。 Table对象需要匹配数据库中已有的表或视图的定义 - 如果可以自动生成这些定义,它将使生活变得更加容易。

4 个答案:

答案 0 :(得分:1)

以下列出表中列的名称和类型的示例:

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

似乎有一些建议

答案 1 :(得分:0)

如果您想复制表定义,可以使用:

select top 0
  *
into
  newtable
from
  mytable

编辑:抱歉,只是重新阅读您的问题,并意识到这可能无法解答。您能否清楚自己的目标是什么,是否需要完全复制表定义,或者包含有关表定义信息的表?

答案 2 :(得分:0)

感谢您的回复。是的我确实想要一个完全重复的DDL,但我意识到我错误地说明了我需要的东西。它是DDL,它将创建一个与视图列匹配的临时表。

我在看Duckworths的建议时意识到这一点 - 这很好,但不幸的是不包括视图的情况。

  

选择视图定义   INFORMATIONSCHEMA.VIEWS

...将为您提供视图中的列列表(并假设视图中的所有列都是直接从表中派生的),然后可以使用Duckworths建议的修订版本将相关内容汇总到一起DLL。

我很惊讶它并不容易!我希望有人告诉我,有一个完善的例程可以做到这一点,因为TABLE对象需要完全定义所有列(而不是Oracle的做法,就是说 - “给我一些看起来像表X的东西”

无论如何,再次感谢您的帮助,欢迎任何进一步的建议。

答案 3 :(得分:0)

在另一个问题的this posting中,我有一个DB逆向工程脚本,它将执行表,视图,PK,UK和索引定义以及外键。这个是针对SQL Server 2005的,并且是我最初为SQL Server 2000编写的端口。如果您需要SQL Server 2000版本,请在此帖子中添加评论,我将在此处发布。