我正在接受考试。但我认为lineize已经够大了。我知道增加lineize将解决问题。请告诉我为什么我在这里获得SP2-0253。
SQL> COLUMN sal HEADING 'Salary' FORMAT $99,999.99
SQL> set lines 10
SQL> show user
USER is "SCOTT"
SQL> desc sal from emp
Usage: DESCRIBE [schema.]object[@db_link]
SQL> select sal from emp where rownum = 1;
SP2-0253: data item 1 ("SAL") will not fit on line
SQL> set lines 20
SQL> /
Salary
-----------
$800.00
SQL>
答案 0 :(得分:1)
1)show linesize
获取当前的行大小。我猜是" 80"。
2)set linesize 32767
3)运行SQL命令。检查实际的线路大小。
答案 1 :(得分:1)
SP2-0253:数据项1(“SAL”)不适合
原因很简单。您希望输出格式为:
FORMAT $99,999.99
需要在 SQL * Plus输出中以正确的位置和对齐显示11
的 lineize 强>
让我们看看:
SQL> set linesize 11
SQL> select sal from emp where rownum = 1;
Salary
-----------
$800.00
查看输出中需要多少行的最简单方法是检查下划线的 LENGTH :
SQL> select length('-----------') length from dual;
LENGTH
----------
11
SQL>
所以,它回答了问题“为什么11行的输出不能适合10行”。
更新此行为的实际原因是列名称的格式为新列名称,并且未提供正确的别名 选择列表。
COLUMN命令仅在完全匹配时才应用于SELECT列表中的列名。如果它们不同,则必须在select语句的列列表中使用确切的别名。
解决方案添加与格式提供的列名相同的别名。
SQL> COLUMN sal HEADING 'Salary' FORMAT $99,999.99
SQL> set lines 10
SQL> show user
USER is "SCOTT"
SQL> select sal from emp where rownum = 1;
SP2-0253: data item 1 ("SAL") will not fit on line
SQL> select sal Salary from emp where rownum = 1;
SALARY
----------
800
SQL>
可替换地,
SQL> set linesize 10
SQL> select sal Salary from emp where rownum = 1;
SALARY
----------
800
SQL> select sal as "Salary" from emp where rownum = 1;
Salary
----------
800
SQL> select sal from emp where rownum = 1;
SP2-0253: data item 1 ("SAL") will not fit on line
SQL> set linesize 11
SQL> select sal from emp where rownum = 1;
Salary
-----------
$800.00
SQL>
答案 2 :(得分:0)
问题不是格式,而是负数的尾随符号。没有数字格式可以避免这种情况。使用to_char
与substr
一起选择所需格式的数据,将结果修剪为10个字符