我正在编写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/