in language-extensions/dotnet-core-CSharp/src/managed/CSharpParamContainer.cs [149:216]
public unsafe void ReplaceParam(
ushort paramNumber,
void **paramValue,
int *strLenOrNullMap)
{
Logging.Trace("CSharpParamContainer::ReplaceParam");
if(!UserParams.ContainsKey(_params[paramNumber].Name))
{
*strLenOrNullMap = SQL_NULL_DATA;
return;
}
_params[paramNumber].Value = UserParams[_params[paramNumber].Name];
CSharpParam param = _params[paramNumber];
if(param.Value == null)
{
*strLenOrNullMap = SQL_NULL_DATA;
return;
}
*strLenOrNullMap = (int)param.Size;
switch(param.DataType)
{
case SqlDataType.DotNetInteger:
ReplaceNumericParam<int>((int)param.Value, paramValue);
break;
case SqlDataType.DotNetUInteger:
ReplaceNumericParam<uint>((uint)param.Value, paramValue);
break;
case SqlDataType.DotNetBigInt:
ReplaceNumericParam<long>((long)param.Value, paramValue);
break;
case SqlDataType.DotNetUBigInt:
ReplaceNumericParam<ulong>((ulong)param.Value, paramValue);
break;
case SqlDataType.DotNetTinyInt:
ReplaceNumericParam<sbyte>((sbyte)param.Value, paramValue);
break;
case SqlDataType.DotNetUTinyInt:
ReplaceNumericParam<byte>((byte)param.Value, paramValue);
break;
case SqlDataType.DotNetSmallInt:
ReplaceNumericParam<short>((short)param.Value, paramValue);
break;
case SqlDataType.DotNetUSmallInt:
ReplaceNumericParam<ushort>((ushort)param.Value, paramValue);
break;
case SqlDataType.DotNetDouble:
ReplaceNumericParam<double>((double)param.Value, paramValue);
break;
case SqlDataType.DotNetFloat:
ReplaceNumericParam<double>((double)param.Value, paramValue);
break;
case SqlDataType.DotNetReal:
ReplaceNumericParam<float>((float)param.Value, paramValue);
break;
case SqlDataType.DotNetBit:
bool boolValue = Convert.ToBoolean(param.Value);
ReplaceNumericParam<bool>(boolValue, paramValue);
break;
case SqlDataType.DotNetChar:
*strLenOrNullMap = (param.Value.Length < *strLenOrNullMap) ? param.Value.Length : *strLenOrNullMap;
ReplaceStringParam((string)param.Value, paramValue);
break;
default:
throw new NotImplementedException("Parameter type for " + param.DataType.ToString() + " has not been implemented yet");
}
}