5

CRUDストアドプロシージャなどを生成するためのT4テンプレートを作成しています

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を参照として使用しています

4

3 に答える 3

15

タイプには、探している情報の次のビットを含むColumnというプロパティがあります。DataType

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

等々。すべてのフィールドがすべてのタイプで入力されるわけではありません。明らかに、VARCHARの数値スケールは意味がありません。

精度、スケール、最大長に関するMSDNドキュメントを確認してください。主な文はこれです:

精度は、数値の桁数です。スケールは、数値の小数点の右側の桁数です。たとえば、数値123.45の精度は5、スケールは2です。

したがって、DECIMAL(12,4) aの精度は12桁(合計)であり、そのうち4桁は小数点(スケール)の後にあり、したがって8桁は小数点の前にあります。

しかし、それらはあなたが探している分野であるはずですよね?

于 2010-02-16T17:34:07.547 に答える
3

試す:

column.Properties["Length"].Value
于 2010-03-12T10:47:05.103 に答える
0

次のコードを使用して、すべてのフィールドプロパティを取得できます。

<#= propertyType #>
<#=col.DataType.MaximumLength#>
<#=col.Nullable?"?":""#>
于 2017-12-09T19:39:58.770 に答える