I saw that you are using a variant to inform the parameters, but if you use use a Parameter type you must to do the following...
pParameter->Direction = (ParameterDirectionEnum)nDirection;
pParameter->PutPrecision(nPrecision);
pParameter->PutNumericScale(nScale);
Remember: When you are using a parameter type float, double, decimal, you must to inform the presisicion and the scale... Regards Carlos Antollini. Sonork ID 100.10529 cantollini