in language-extensions/dotnet-core-CSharp/src/managed/CSharpParamContainer.cs [61:143]
public unsafe void AddParam(
ushort paramNumber,
string paramName,
SqlDataType dataType,
ulong paramSize,
short decimalDigits,
void *paramValue,
int strLenOrNullMap,
short inputOutputType)
{
Logging.Trace("CSharpParamContainer::AddParam");
if (paramName == null)
{
throw new ArgumentException("Invalid input parameter name supplied");
}
else if (paramNumber >= TotalParams || paramNumber < 0)
{
throw new ArgumentException("Invalid input parameter id supplied: " + paramNumber.ToString());
}
_params[paramNumber] = new CSharpParam{
DataType = dataType,
DecimalDigits = decimalDigits,
Name = paramName,
InputOutputType = inputOutputType,
Number = paramNumber,
Size = paramSize,
StrLenOrNullMap = strLenOrNullMap
};
if (strLenOrNullMap == SQL_NULL_DATA)
{
return;
}
switch(dataType)
{
case SqlDataType.DotNetInteger:
_params[paramNumber].Value = *(int*)paramValue;
break;
case SqlDataType.DotNetUInteger:
_params[paramNumber].Value = *(uint*)paramValue;
break;
case SqlDataType.DotNetBigInt:
_params[paramNumber].Value = *(long*)paramValue;
break;
case SqlDataType.DotNetUBigInt:
_params[paramNumber].Value = *(ulong*)paramValue;
break;
case SqlDataType.DotNetTinyInt:
_params[paramNumber].Value = *(sbyte*)paramValue;
break;
case SqlDataType.DotNetUTinyInt:
_params[paramNumber].Value = *(byte*)paramValue;
break;
case SqlDataType.DotNetSmallInt:
_params[paramNumber].Value = *(short*)paramValue;
break;
case SqlDataType.DotNetUSmallInt:
_params[paramNumber].Value = *(ushort*)paramValue;
break;
case SqlDataType.DotNetDouble:
_params[paramNumber].Value = *(double*)paramValue;
break;
case SqlDataType.DotNetFloat:
_params[paramNumber].Value = *(double*)paramValue;
break;
case SqlDataType.DotNetReal:
_params[paramNumber].Value = *(float*)paramValue;
break;
case SqlDataType.DotNetBit:
_params[paramNumber].Value = *(bool*)paramValue;
break;
case SqlDataType.DotNetChar:
_params[paramNumber].Value = Interop.UTF8PtrToStr((char*)paramValue, (ulong)strLenOrNullMap);
break;
default:
throw new NotImplementedException("Parameter type for " + dataType.ToString() + " has not been implemented yet");
}
UserParams[paramName] = _params[paramNumber].Value;
}