@@ -112,7 +112,7 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq
112
112
case DbType . AnsiStringFixedLength :
113
113
dbParam . Size = IsAnsiText ( dbParam , sqlType )
114
114
? MsSql2000Dialect . MaxSizeForAnsiClob
115
- : MsSql2000Dialect . MaxSizeForLengthLimitedAnsiString ;
115
+ : IsChar ( dbParam , sqlType ) ? sqlType . Length : MsSql2000Dialect . MaxSizeForLengthLimitedAnsiString ;
116
116
break ;
117
117
case DbType . Binary :
118
118
dbParam . Size = IsBlob ( dbParam , sqlType )
@@ -130,7 +130,7 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq
130
130
case DbType . StringFixedLength :
131
131
dbParam . Size = IsText ( dbParam , sqlType )
132
132
? MsSql2000Dialect . MaxSizeForClob
133
- : MsSql2000Dialect . MaxSizeForLengthLimitedString ;
133
+ : IsChar ( dbParam , sqlType ) ? sqlType . Length : MsSql2000Dialect . MaxSizeForLengthLimitedString ;
134
134
break ;
135
135
case DbType . DateTime2 :
136
136
dbParam . Size = MsSql2000Dialect . MaxDateTime2 ;
@@ -199,6 +199,18 @@ protected static bool IsBlob(DbParameter dbParam, SqlType sqlType)
199
199
return sqlType is BinaryBlobSqlType || DbType . Binary == dbParam . DbType && sqlType . LengthDefined &&
200
200
sqlType . Length > MsSql2000Dialect . MaxSizeForLengthLimitedBinary ;
201
201
}
202
+
203
+ /// <summary>
204
+ /// Interprets if a parameter is a character (for the purposes of setting its default size)
205
+ /// </summary>
206
+ /// <param name="dbParam">The parameter</param>
207
+ /// <param name="sqlType">The <see cref="SqlType" /> of the parameter</param>
208
+ /// <returns>True, if the parameter should be interpreted as a character, otherwise False</returns>
209
+ protected static bool IsChar ( DbParameter dbParam , SqlType sqlType )
210
+ {
211
+ return sqlType . LengthDefined && sqlType . Length == 1 &&
212
+ ( dbParam . DbType == DbType . StringFixedLength || dbParam . DbType == DbType . AnsiStringFixedLength ) ;
213
+ }
202
214
203
215
/// <inheritdoc />
204
216
public override IResultSetsCommand GetResultSetsCommand ( ISessionImplementor session )
0 commit comments