2015-06-24 4 views
7

Erledigt einen Pivot-Bericht in SQL * Plus, wobei er die Anzahl der Datensätze mit dem Status 'ERROR' zählt und Hex-Werte in den Ergebnissen findet. Es kann auf 11g reproduziert werden mit dem folgenden:SQL * Plus - numerische Spalte zeigt Hexadezimalzeichen an

SQL> select 1 error from dual; 

    ERROR 
---------- 
########## 

Dann habe ich mit ein paar Sorte getestet:

SQL> select 1 errors from dual; 

    ERRORS 
---------- 
     1 

SQL> select 'a' error from dual; 

ERROR 
----------------------------------------------------------------- 
a 

SQL> select 'a' errors from dual; 

E 
- 
a 

scheint wie eine Spalte ‚Fehler‘ macht seltsame stopft Ihr Ergebnis in SQL Namen mit * Außerdem tritt dieses Problem nicht in SQL-Entwickler auf. Hat jemand eine Erklärung? Es scheint keine Umgehungslösung, außer Umbenennen ..

+0

Es scheint eine Marotte (Bug) in SQL * Plus zu sein. Benennen Sie die Spalte also um oder wandeln Sie sie in eine Zeichenfolge um. – APC

Antwort

2

Sieht aus wie die NUMBER Format für Spalte ERROR standardmäßig in SQL*Plus gesetzt.

ATTRIBUTE Befehl zeigt das Format von diesem.

SQL> attribute error 
COLUMN ERROR ON 
FORMAT A65 
word_wrap 

So können, deaktivieren Sie es. Jetzt

SQL> column error clear 

,

SQL> select 12 error from dual; 

    ERROR 
---------- 
     12 

Voll Script:

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 24 04:26:15 2015 
Copyright (c) 1982, 2011, Oracle. All rights reserved. 

Connected to: 
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 
With the Partitioning, OLAP and Data Mining options 

SQL> attribute error 
COLUMN ERROR ON 
FORMAT A65 
word_wrap 

SQL> show numwidth 
numwidth 10 

SQL> select 12 error from dual; 

    ERROR 
---------- 
########## 

SQL> column error clear 

SQL> attribute error 
SP2-0046: ATTRIBUTE 'error' not defined 

SQL> select 12 error from dual; 

    ERROR 
---------- 
     12 

SQL> column error format A10 

SQL> select 12 error from dual; 

    ERROR 
---------- 
########## 
1

Es ist nur ein Workarround, aber Sie können Ihre Int als char.

SQL> select cast(1 as char(50)) as error from dual;` 

ERROR 
--------- 
1 
Verwandte Themen