タイプ(たとえばnvarcharまたはint)が固定長であるかどうか、システムテーブルを照会してt-sqlを使用してランタイムを調べることはできますか?t-sqlの型が固定長であるかどうかを調べる方法(実行時)?
私はこれを行う必要がある理由は、SQLコードランタイムを生成する必要があり、いくつかの列(設計時には不明)の種類に応じていくつかの宣言(DECLARE @foo SOMETYPE(LENGTH)
またはDECLARE @foo SOMETYPE
)を生成する必要があるということです。
私の現在の賭けは、sys.all_columns.max_length = sys.types.max_length
であるかどうかを確認でき、固定長であると仮定しています(max_length
は少なくともnvarcharでは特別なコード(-1)を持っているようです)。
互換性が必要なSQL Serverのバージョンは何ですか?一部のソリューション(information_schema.columnsなど)はSQL 2005以降のバージョンでのみ機能します。 –
SQL 2005またはそれ以降。 文字型、小数点型、整数型などの両方を理解できる宣言を生成するための一般的なアルゴリズムを見つけることができないようです。単にinformation_schema.columns.numeric_precision/numeric_scale/character_maximum_lengthを確認していないようです十分であるように。 – finnsson