まず第一に、私の英語を許してください。このエラーが発生しています__オブジェクトをexecutecalar()からlongに明示的に変換しようとすると、executecalar()をlongにボックス化できません。
while は System.Decimal 型に変換するときにエラーを出しません。
long? id = (long?)ppwDb.ExecuteScalar(ppwDbCmd); //RAISE eXCEPTION
decimal? id = (decimal?)ppwDb.ExecuteScalar(ppwDbCmd);***// NO eXCEPTION
id の AND 値は (id = 9874563) で、長距離を意味します。