-
DB2_NUMBER_ROWS Falsche Anzahl von Sätzen
Hallo,
ich habe folgenden Code:
Code:
exec sql prepare dynSqlStmt1 from :wkSqlStmt;
exec sql open sqlCsrRead1;
exec sql
get diagnostics :wkCount = DB2_NUMBER_ROWS;
exec sql declare sqlCsrRead1 cursor for dynSqlStmt1;
Obwohl es nur ein Satz vorhanden ist, bekomme ich immer Werte zurück die ich mir nicht erklären kann (997, 1247, ..)
Da ich den SFL-Dynamisch aufbaue und mit Pagedown die nächsten lese, weiß ich beim drucken nicht wie viele Sätze vorhanden sind.
Laut Handbuch sollte das so funktionieren.
Was ist an der Methode falsch?
Dank im Voraus
Liebe Grüße
PS: habe auch versucht den Cursor vorher zu schließen
-
Die Info ist vom Grundsatz her ein Schätzwert, da je nach Komplexität des Selects die genaue Anzahl erst beim vollständigen Lesen verfügbar ist.
Du kannst allerdings beim Select einen zusätzlichen "count(*) over() as total" hinzufügen.
Somit wird nun tatsächlich erst mal alles gelesen und du hast vom 1. bis letzten Satz die Gesamtzahl zur Verfügung.
Dies ist allerdings mit einer kleinen Perfomranceeinbuße hinzunehmen.
-
Danke für die Info, werde ich gleich ausprobieren.
Das Statement ist gar nicht so komplex.
Das es Probleme mit Joins geben würde, war mir bewusst aber dachte wenn ich nur eine Tabelle abfrage...
Code:
SELECT ARLAG, ARTNR, ARTBZ, ARTBZ2, AREXTNR, ARDPR, ARLBS FROM
MATARTP WHERE Length(rtrim(ARTNR)) >= 8 AND ARTNR NOT IN(
'FREMD-REP ') AND ARTNR NOT LIKE ('K-%') AND UPPER(ARLAG) =
UPPER('0 ') AND ARLBS = 0 ORDER BY ARTNR
-
Da können fast keine Indizes verwendet werden, kein Wunder dass es eine Schätzung gibt.
-
Ich hatte das Selbe Problem. Nach einer Suche im Internet wurde mir vorgeschlagen den Cursor als INTENSITIVE zu deklarieren, es klappt nun mit den "DB2_NUMBER_ROWS" ... inwiefern sich diese Änderung jedoch positiv oder negativ auf dein Programm auswirken könnte müsstest probieren.
-
Danke man lernt nie aus INTENSITIVE habe ich bis dato noch nie verwendet.
-
Sollte wohl INSENSITIVE heißen?!
Hier aus der Reference was INSENSITIVE bedeutet ...
INSENSITIVE
Specifies that once the cursor is opened, it does not have sensitivity to inserts, updates, or
deletes performed by this or any other activation group. If INSENSITIVE is specified, the cursor is
read-only and a temporary result is created when the cursor is opened. In addition, the SELECT
statement cannot contain a UPDATE clause and the application must allow a copy of the data
(ALWCPYDTA(*OPTIMIZE) or ALWCPYDTA(*YES)).
-
ALWCPYDTA ist eine Compiler-Anweisung des CRTSQL.... und steht per Default auf *Optimize.
Da finde ich persönlich inzwischen "Count(*) Over()" schöner und fast ohne Performancenachteile.
-
Zitat von B.Hauser
Sollte wohl INSENSITIVE heißen?!
Hier aus der Reference was INSENSITIVE bedeutet ...
INSENSITIVE
Specifies that once the cursor is opened, it does not have sensitivity to inserts, updates, or
deletes performed by this or any other activation group. If INSENSITIVE is specified, the cursor is
read-only and a temporary result is created when the cursor is opened. In addition, the SELECT
statement cannot contain a UPDATE clause and the application must allow a copy of the data
(ALWCPYDTA(*OPTIMIZE) or ALWCPYDTA(*YES)).
:-) Natürlich. Muss mir wohl einen Korrekturleser besorgen. Danke für die Richtigstellung.
-
Da brauchst du nichts bestellen, die sind doch schon da;-), und das ganz freiwillig.
Similar Threads
-
By Radinator in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 20-02-19, 15:36
-
By SabineK in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 24-11-14, 19:18
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 20-10-14, 14:16
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 06-06-14, 12:44
-
By KB in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 07-09-01, 10:56
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks