Did you make any changes to this procedure recently? If you make a change to the proc or the code, then you need to touch Web.config in order to recycle the app and clear the parameter cache. The first time it calls that proc it caches the params, then if you made a change without clearing the cache you may see this error. The cache even survives a rebuild, so you need to type a space in Web.config and save it to clear the cache.
Also its possible this line is the cause:
sph.DefineSqlParameter("@hou_price", SqlDbType.Decimal, ParameterDirection.Input, hou_price);
you should specify the size like this:
sph.DefineSqlParameter("@hou_price", SqlDbType.Decimal, 18, ParameterDirection.Input, hou_price);
Hope it helps,
Joe