PDA

View Full Version : SQL V7R1 arbeitet bei Dezimalfehler einfach weiter



Seiten : 1 [2] 3

Fuerchau
20-02-15, 11:01
Ich habe das nun auch noch mit SQLRPGLE probiert, der SQLCOD ist 802 und nicht -802!
Der entsprechende NULL-Anzeiger steht dann auf -2 (Datenverlust).
ODBC kennt sowas ja nicht und positive SQLCodes sind ja nur Warnungen.

Fuerchau
23-02-15, 13:56
Nun ja, von der IBM gibt's die erste Meldung die allerdings keinen Unterschied brachte.
Anscheinend kennen die ihre eigenen ODBC-Einstellungen nicht.

Hat jemand noch Zugriff auf V6R1 und V5R4 um folgenden Befehl z.B. als Excel-Import per ODBC auszuprobieren und das Ergebnis hier zu posten?

select dec(10000, 3, 0)
from sysibm/sysdummy1

Ziel ist, dass dieser einen SQL0802 auslöst, was laut IBM ab V6R1 kein Fehler sondern nur eine Warnung ist, also als positiver SQLCOD gemeldet wird.

mk
23-02-15, 14:16
HI

also bei V7R2 wird ein negativer SQLCOD ausgegeben
SQLCOD = -000000802.

KingofKning
23-02-15, 14:26
Nun ja, von der IBM gibt's die erste Meldung die allerdings keinen Unterschied brachte.Anscheinend kennen die ihre eigenen ODBC-Einstellungen nicht.Hat jemand noch Zugriff auf V6R1 und V5R4 um folgenden Befehl z.B. als Excel-Import per ODBC auszuprobieren und das Ergebnis hier zu posten?select dec(10000, 3, 0) from sysibm/sysdummy1 Ziel ist, dass dieser einen SQL0802 auslöst, was laut IBM ab V6R1 kein Fehler sondern nur eine Warnung ist, also als positiver SQLCOD gemeldet wird.Also ich bekomme 00001 zurück unter V5R4. Sehe keine Fehlermeldung

GG

Fuerchau
23-02-15, 14:44
Da scheint das bei V7R2 ja wohl behoben zu sein. Mal sehen, wann es das PTF dann für V7R1 gibt.

Ich habe nun noch mal das Ankündigungsschreiben für V6R1 analysiert:

3.11.24 SQL Query changes in collation of errors might result in a

SQL0802

In PTF MF45590, a change was made to not collate errors for SQL queries

with distinct or aggregation. This was done to avoid providing wrong

results when a result in error can not be included in aggregation or

distinct result sets. A selection error is now signalled in this

scenario, using the SQL0802 message with SQLCODE=-802 and

SQLSTATE='22003'. The SQL0802 message will be preceded by CPF5035 and

CPD4019 escape messages.

To allow compatibility with previous behavior, a new QAQQINI option,

COLLATE_ERRORS, is available by PTF.

COLLATE_ERRORS - Specifies how data errors are handled on the GROUP BY

and ORDER BY expression during hash or sort processing within queries.

Supported values:

* *DEFAULT - The default is *NO.

* *NO - A value of *NO causes the query to be ended with an error when

a grouping or ordering expression results in an error.

* *YES - A value of *YES indicates that the grouping or sort continues.

Da steht nichts davon das SQL0802 nun positiv gesetzt wird oder verstehe ich da was falsch?

Fuerchau
23-02-15, 15:11
Ich konnte das nun noch mal auf V5R2 ausprobieren (ja, solche Kunden gibt's noch).
Da kommt tatsächlich auch kein Fehler.
Das deckt sich mit obiger V5R4-Aussage.

Gut, hoffe ich mal auf das PTF aus V7R2.

mk
23-02-15, 16:02
Hi,

gearde nochmal mit einem kleinen Progrämmchen auf einem V5R4 und auf einem V7R1 System probiert


danum s 3 0
dx s 1

C/EXEC SQL
C+ select dec(10000, 3, 0) into :aNum
c+ from sysibm/sysdummy1
C/END-EXEC

c 'sqlcod' dsply

*
c Eval *INLR = *ON

Beide Systeme liefern den SQLCOD im Debugger
SQLCOD = -000000802.

Gruß
Michael

Fuerchau
23-02-15, 16:28
Da gibt's also auch bei V5R4 anscheinend unterschiedliche PTF-Stände bzgl. dieses Fehlers.

BenderD
23-02-15, 16:35
... auf Holgers PUB1 V5R4 kommt da auch ein +802 mit SQLSTATE 01519 (warning) durch; ANSI korrekt wäre ein SQLSTATE class 22 (data exception). Was den SQLCODE angeht, scheinen das typische Abnutzungserscheinungen des SQLCODE Würfels zu sein, da muss der Strich nachgezogen werden. Was den SQLSTATE angeht, da geht es sowieso auf allen Datenbanken drunter und drüber. Am besten schneidet da noch PostgreSQL ab.

D*B

B.Hauser
24-02-15, 06:34
Sowohl in Release V5R4 als auch in Release 7.2 wird der SQLCODE -802 ausgegeben, wenn keine Indikator-Variable verwendet wird.
Wird mit Indikator-Variable gearbeitet wird in beiden Releasen der SQLCODE +802 ausgegeben.
Der Wert der Indikator-Variable wird in beiden Releasen mit -2 (Datenmapping) ausgegeben.

Und das ist korrekt, deshalb werden Indikator-Variablen ja verwendet.

Birgitta