文字列フォーマッティング

数字をn桁でゼロ詰めした文字列に変換するのはどうするのだろうか.
nがあらかじめ分かっていれば

TO_CHAR(num, '000000000');
と書けるので,桁数指定部分に0をn文字列を埋め込めばいいのかと思うのですが,同じ文字列をn個連結する関数はないのかしらん.まあ,足しながらループを回せばいいわけですが…….
上記だと9桁なのでCHAR(9)型の変数に入れればいいと思いきや,ちなみに正負記号が入るせいなのか,CHAR(10)じゃないと入りません.
それにしてもOracleのエラーメッセージはもっとちゃんと日本語化してください.意味不明すぎる.