我正在编写T4模板以生成CRUD存储的proc等

我正在使用SMO遍历表的各列:

For Each column As Column In table.Columns
    WriteLine("@" & column.Name & " " & column.DataType.Name & ", ")
Next

我的问题是,如何找到varchar列的长度?列上似乎没有任何Length/MaxLength等属性。

我正在使用http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.column_members.aspx作为引用

最佳答案

Column类型具有一个名为DataType的属性,其中包含您要查找的以下信息:

int maxLen = column.DataType.MaximumLength;
int maxPrecision = column.DataType.NumericPrecision;
int numericScale = column.DataType.NumericScale;

等等。并非所有字段都为每种类型填充,显然-VARCHAR上的数字小数位数没有意义...。

checkout MSDN docs on precision, scale and max length。主要的句子是这样的:



因此,DECIMAL(12,4)精度为12位数字(总计),其中4位在小数点之后(标度),因此8位数字在小数点之前。

但是这些应该是您要寻找的领域,对吗?

关于sql-server - 使用SQL Server管理对象(SMO)获取列的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2274156/

10-13 00:52