北宋初年曹州济阴县（今山东省菏泽市）人，宋真宗时参知政事。宋太宗时，任中正中进士，为池州推官。历任大理评事、邵州通判、太府寺丞、濮州通判。后来被翰林学士钱若水推荐，转任秘书省着作佐郎、通判大名府。后召入京师开封府，担任秘书丞，授江南转运副使。擢升为监察御史、两浙路转运使，百姓饥荒，他不等诏书下达，打开官廪赈济。转任殿中侍御史、判三司凭由司。出任荆湖转运使，转任左司谏、直史馆、知梓州。擢升为枢密直学士，代替张咏知益州，办事按照张咏条制。后来知审判院，出知并州。转任给事中、权知开封府。大中祥符九年（1016