我正在尝试通过邮件发送查询输出。我正在使用以下命令。
FOR i IN emp_cur LOOP
e_fullname := i.full_name;
UTL_SMTP.WRITE_DATA(v_connection_handle,
e_fullname || ' - ' || i.ID ||' - ' || i.location_city ||' - ' || i.job ||' - ' || i.supervisor_name || UTL_TCP.CRLF|| UTL_TCP.CRLF);
END LOOP;
输出如下:
Pandyan - 12312 - Williamsburg - Developer - Pieterson
Bowaris - 98615 - Ohio - Spec - Pieterson
Perry, Steven W (Steve) - 11111 - Ohio - Analyst - Pieterson
Praveerarajan - 44444 - Williamsburg - Engineer - Pieterson
现在,我怎样才能使输出看起来很好(精简)。这样所有的emp名称都有正确的间距,ID在一条直线上一个接一个地显示,而其他列则相同。
由于 venkat
答案 0 :(得分:0)
使用RPAD和LPAD函数使列占用相同的空间量,而不管内容的长度如何。使用RPAD对齐左侧的字符串,使用LPAD对齐右侧的数字。
EG。
rpad(e_fullname, 15) || ' - ' || lpad( i.ID, 10) ||' - ' || rpad(i.location_city, 30) ||' - ' || rpad(i.job,10) ||' - ' || rpad(i.supervisor_name,15) || UTL_TCP.CRLF|| UTL_TCP.CRLF);
默认的填充字符是空格,在这种情况下可能就是你想要的。
当然,这只会使事物在固定大小的字体(如Courier New)中很好地排列。如果你的电子邮件要使用一些易读的字体,如Arial你就会遇到问题。