为什么我会得到SP2-0253

时间:2015-04-27 04:34:04

标签: oracle sqlplus

我正在接受考试。但我认为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>

3 个答案:

答案 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_charsubstr一起选择所需格式的数据,将结果修剪为10个字符