【发布时间】:2019-06-12 04:41:04
【问题描述】:
我有一个元数据表,它有四列 Table_N、Column_N、DType 和 DLength,我试图循环遍历元数据表,并为每个不同的表动态地吐出 CREATE TABLE 语句及其所有列、数据类型和数据长度。基本上是典型的表结构或定义。
到目前为止,我已经添加了一个游标来循环它们,并使用动态 SQL 语法遇到障碍,特别是处理 DLength 字段的某些列值的 NULL 值。例如,如果列的数据类型是 DATE,那么该列的 Dlength 值将为 NULL。如果我将 DType 具有 VARCHAR 和 DLength 具有 100 的列连接起来,那么 '@DT' + '(' + @DL+ ')' 将导致 VARCHAR(100)但是对于 DATE、INT 或任何类似的数据类型,我需要一种不同的方法。另外,不是光标的忠实粉丝,所以如果您对此有完全不同的方法,请随时提出建议。任何建议都非常感谢。谢谢!
表名:DDC_Loop(下面的示例包含 2 个表元数据)
Table_N Column_N DType DLength
--------------------------------------------------------
AUT_C_TABLOG ORIGINAL VARCHAR 1
AUT_C_TABLOG PROTOCOL VARCHAR 1
AUT_C_TABLOG TABNAME VARCHAR 30
ANLA GEGST VARCHAR 8
ANLA GPLAB DATE NULL
ANLA GRBLT VARCHAR 5
ANLA GRBND VARCHAR 5
ANLA KTOGR VARCHAR 8
ANLA LAND1 VARCHAR 3
ANLA MENGE NUMERIC 16,3
【问题讨论】:
-
你在复制SHOW CREATE TABLE的功能吗?如果有,为什么?
-
你好 Bill,这里的整个想法是使用 DDC_Loop 中的元数据来实现 100 个表。从上面的示例中,我们将创建 2 个表,即 AUT_C_TABLOG 和 ANLA
标签: sql-server tsql dynamic-sql