我正在编写T4模板来生成CRUD存储过程等
我正在使用SMO循环遍历表的列:
For Each column As Column In table.Columns
WriteLine("@" & column.Name & " " & column.DataType.Name & ", ")
Next
Run Code Online (Sandbox Code Playgroud)
我的问题是如何找到varchar列的长度?列上似乎没有任何Length/MaxLength etc属性.
我正在使用http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.column_members.aspx作为参考
mar*_*c_s 12
该Column类型有一个名为的属性DataType,其中包含您正在寻找的这些信息:
int maxLen = column.DataType.MaximumLength;
int maxPrecision = column.DataType.NumericPrecision;
int numericScale = column.DataType.NumericScale;
Run Code Online (Sandbox Code Playgroud)
等等.并非所有字段都为每种类型填充,显然 - VARCHAR上的数字缩放没有意义....
查看有关精度,比例和最大长度的MSDN文档.主要的一句是这样的:
精度是数字中的位数.Scale是数字中小数点右边的位数.例如,数字123.45的精度为5,标度为2.
因此a DECIMAL(12,4) 具有12位数(总计)的精度,其中4位于小数点后(刻度),因此8位数位于小数点之前.
但那些应该是你正在寻找的领域,对吧?