Anmelden

View Full Version : fetch for 1000 Rws only



Robi
09-03-15, 13:52
Hi *all

Ich hab eine Dateierstellung via CREATE TABLE in ein STRQM Source gepackt.
Das sieht ungefähr so aus

create table qtemp/DATEI as(
with a as (select ... from ...
where ... ),
b as (select ... from ...
where ... )
select ... from ... where ...
fetch first 1000 rows only
) with data


Syntayprüfung sagt: ok
Kopie der Source in eine interaktive SQL Sitzung: ok

strqmqry:

Nachrichten-ID . . . . : SQL0199 Bewertung . . . . . . : 30
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 09.03.15 Sendezeit . . . . . . : 14:49:15

Nachricht . . . : Schlüsselwort FETCH nicht erwartet. Gültige Token: ) UNION
EXCEPT.
Ursache . . . . : Schlüsselwort FETCH wurde an dieser Stelle nicht erwartet.
Im Schlüsselwort FETCH wurde ein Syntaxfehler erkannt. Die Teilliste
gültiger Token ist ) UNION EXCEPT. Bei dieser Liste wird vorausgesetzt, dass
die Anweisung bis zum unerwarteten Schlüsselwort richtig ist. Der Fehler
liegt möglicherweise an anderer Stelle der Anweisung, die Syntax scheint
aber bis zu dieser Stelle korrekt zu sein.
Fehlerbeseitigung: Die SQL-Anweisung im Bereich des angegebenen
Schlüsselworts untersuchen. Möglicherweise fehlt ein Doppelpunkt oder ein
SQL-Begrenzer. Bei SQL müssen reservierte Wörter begrenzt werden, wenn sie
als Namen verwendet werden sollen. Die SQL-Anweisung korrigieren und die


Das Statement enthält natürlich einige Variablen wie &JAHR oder &STATUS
aber wie gesagt... Sysntaxprüfung und interaktiv ist alles ok
Hat einer ne Idee

Danke
Robi

Fuerchau
09-03-15, 14:44
Ggf. musst du das nochmal schachteln:

create table qtemp/DATEI as(
with a as (select ... from ...
where ... ),
b as (select ... from ...
where ... )
select * from (
select ... from ... where ...
fetch first 1000 rows only
) c
) with data

Robi
09-03-15, 15:14
Hat geklappt,
manchmal ist es schon sehr kompliziert mit der Kiste.
:confused:
Danke

Fuerchau
09-03-15, 15:56
Manchmal muss SQL überlistet werden.
Beim "CREATE TABLE AS ..." scheint SQL nur alle Daten zu wollen.
Daher ist die Einschränkung wieder in eine "Derived Table" zu verlegen.
"Fetch first 1 rows only" hilft mir schon manchmal bei scalaren Subselects die sonst mehr als 1 Zeile liefern könnten. Dies musste ich früher mittels "Group by" einschränken was allerdings zu mehr Zugriffen als nötig führte.