在 oracle sql 中接受数字后,值前面有许多额外的空格



我正在尝试接受一个数字,但是接受它后,v_no前面有这么多额外的空间,有什么办法可以删除或阻止它吗?

问题:

Enter value of 'N' for top 'N' of customer: 10
old 543:        ROWNUM <= &v_no
new 543:        ROWNUM <=         10 --there are so much space in front the 10

这是我的查询:

ACCEPT v_no NUMBER FORMAT '99' PROMPT 'Enter value of ''N'' for top ''N'' of customer: '
ttitle center 'Top &v_no Valuable Customer' skip 2
SELECT
ROWNUM "No."
, "Customer ID"
, "Customer Name"
, "Customer Birthdate"
FROM
(
SELECT
row_number() OVER (ORDER BY c.cust_name) "No."
, c.cust_id "Customer ID"
, c.cust_name "Customer Name"
, c.cust_birthdate "Customer Birthdate"
FROM
customer        c
, reservation     r
WHERE
c.cust_id            = r.cust_id
GROUP BY
c.cust_name
, c.cust_id
, c.cust_birthdate
ORDER BY
1 DESC
)
WHERE
ROWNUM <= &v_no
;

这是输出:

Enter value of 'N' for top 'N' of customer: 10
old 543:        ROWNUM <= &v_no
new 543:        ROWNUM <=         10
Top         10 Valuable Customer
No. Customer Customer               Customer  
ID       Name                   Birthdate 
----- -------- ---------------------- ----------
1 C0395    Chance Tomei           01/01/1972
2 C0383    Aron Boatman           23/04/1972
3 C0389    Andrew Mechi           31/07/1959
4 C0371    Alisun Iacoviello      27/02/1997
5 C0377    Pearl Bairnsfather     30/03/1988
6 C0365    Adoree Standbridge     13/07/1995
7 C0353    Swen Kift              23/05/1983
8 C0359    Donella Whitcher       04/03/1974
9 C0293    Gordon Perri           22/07/1977
10 C0290    Hetti Treeby           01/08/1968

v_no前面的空间使标题非常丑陋。

任何帮助,不胜感激。

ttitle命令有一个format选项:

设置文本格式

指定一个格式模型,该模型确定以下数据项的格式,直到下一个 FORMAT 子句或命令的末尾。格式模型必须是文本常量,例如 A10 或 $999。有关格式设置和有效格式模型的详细信息,请参阅 COLUMN 命令。

您可以将ttile行更改为使用与accept相同的格式,从主字符串中提取替换变量并指定格式:

ttitle center 'Top ' &v_no format 99 ' Valuable Customer' skip 2

然后,当传递10时,输出为:

Top 10 Valuable Customer

当传递时,比如说 2,输出是:

Top 2 Valuable Customer

顺便说一下,你可能想在脚本的开头添加set verify off,这将停止它显示oldnew输出 - 无论如何,它仍然有额外的空格,但你可能不想在最终输出中看到它。

最新更新