Можно ли определить время выполнения с помощью t-sql, если тип (например, nvarchar или int) имеет фиксированную длину или нет, путем запроса некоторой системной таблицы?
Причина, по которой мне нужно это сделать, заключается в том, что мне нужно сгенерировать SQL-код времени выполнения и мне нужно сгенерировать некоторые объявления (DECLARE @foo SOMETYPE(LENGTH)
или DECLARE @foo SOMETYPE
) в зависимости от типа некоторых столбцов (которые неизвестны во время разработки). ).
Моя текущая ставка заключается в том, что я могу проверить, если sys.all_columns.max_length = sys.types.max_length
, и если это так, предположить, что это фиксированная длина (поскольку max_length
, кажется, имеет специальный код (-1), по крайней мере, для nvarchar).