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

Posted

技术标签:

【中文标题】如何以编程方式创建列名/描述符【英文标题】:How to create column names/descriptors programmatically 【发布时间】:2008-10-29 04:01:33 【问题描述】:

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

C1 整数, C2 varchar(20), C3双

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

出于好奇,我想要这个,因为我必须维护一些包含 Table 对象的 SP(这是 SQL Server 使用的一种临时表)。 Table 对象需要与数据库中已有的 Tables 或 Views 的定义相匹配 - 如果这些定义可以自动生成,将会变得更加轻松。

【问题讨论】:

【参考方案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似乎有一些建议

【讨论】:

【参考方案2】:

如果你想复制一个表定义,你可以使用:

select top 0
  *
into
  newtable
from
  mytable

编辑:对不起,只是重新阅读您的问题,并意识到这可能无法回答。您能否明确您的目标是什么,您想要一个完全复制的表定义,还是一个包含有关表定义信息的表?

【讨论】:

【参考方案3】:

感谢您的回复。是的,我确实想要 DDL 的精确副本,但我意识到我错误地陈述了我需要的内容。它是 DDL,它将创建一个与视图的列匹配的临时表。

我在查看 Duckworths 的建议时意识到了这一点 - 这很好,但不幸的是没有涵盖视图的情况。

从以下位置选择视图定义 INFORMATIONSCHEMA.VIEWS

... 将为您提供视图中的列列表,并且(假设视图中的所有列都直接从表中派生)然后应该可以使用 Duckworths 建议的修订版本将相关的动态链接库。

我很惊讶这并不容易!我期待有人告诉我,鉴于 TABLE 对象需要完全定义所有列(而不是 Oracle 这样做的方式,也就是说 - “给我一些看起来像表 X ”。

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

【讨论】:

内联编辑器吃了下划线 - 因此在上面的块引用中出现奇怪的列/视图名称【参考方案4】:

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

【讨论】:

以上是关于如何以编程方式创建列名/描述符的主要内容,如果未能解决你的问题,请参考以下文章

将占位符添加到 UITextField,如何以编程方式快速设置占位符文本?

以编程方式添加控件时未实例化占位符

如何在 Spring 中以编程方式解析属性占位符

Swift 以编程方式设置文本字段的占位符

Flyway 以编程方式设置占位符

select2:以编程方式控制占位符