征赋》、《治民论》，献于世宗，诏授御史台主簿。宋太祖建隆二年（961年）辛酉科状元。拜秘书郎，入值史馆。太平兴国四年（979年），去华随宋太宗征讨太原。景德元年（1004年），以工部侍郎身份致仕。宋真宗时，知杭州。景德三年（1006年）病逝家中。第十子张师德亦状元，魏野以诗贺曰：「封禅汾阴连岁榜，状元俱是状元儿。」