473,385 Members | 1,856 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Insert into and FETCH FIRST ROW ONLY

I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.

Dec 14 '06 #1
15 10802
"dataguy" <ba*********@progressive.comwrote in message
news:11**********************@j72g2000cwa.googlegr oups.com...
>I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
If you post the SQL, then maybe someone will be able to help you.
Dec 15 '06 #2
dataguy wrote:
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
Is this what you are looking for?
INSERT INTO SESSION.TEMP SELECT * FROM T FETCH FIRST 10 ROWS ONLY

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Dec 15 '06 #3
When we tried to issue the statement similar to what you have below, we
kept getting an error complaining about the fetch. When we removed the
"fetch first xx rows only" and tried it, no problem.. I can post the
sql if you want it.
Serge Rielau wrote:
dataguy wrote:
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
Is this what you are looking for?
INSERT INTO SESSION.TEMP SELECT * FROM T FETCH FIRST 10 ROWS ONLY

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Dec 15 '06 #4
Here is the SQL in Question:

Note.. We tried putting an open and closed paran around the select
statements and it didn't help.
INSERT
INTO SESSION.NAM_TBL
SELECT PRNW.POL_ID_NBR AS PolicyNumber,
PRNW.RENW_SFX_NBR AS PolicySuffix,
PDTL.POL_STRT_DT AS PolicyStartDate,
PDTL.POL_END_DT AS PolicyEndDate,
PDTL.POL_SRCE_CD AS PolicySourcecd,
PDTL.POL_ST_CD AS PolicyStateCd,
PDTL.PROD_CTGRY_CD AS ProductCategoryCd,
ADRS.PRTY_STR_NAM AS StreetName,
ADRS.PRTY_CITY_NAM AS CityName,
ADRS.PRTY_ST_CD AS StateCd,
ADRS.PRTY_ZIP_CD AS ZipCd,
ADRS.PRTY_ZIP_CD_EXTN AS ZipCdExtn,
PRTY.PRTY_TYP_CD AS PartyTypeCd,
PRTY.PRTY_BRTH_DT AS PartyDOB,
PRTY.PRTY_BSNS_IND AS PartyBusinessInd,
PRTY.PRTY_NAM AS PartyName

-- RP910-PRTY-LST-NAM
-- RP910-PRTY-FRST-NAM
-- RP910-PRTY-NAM-INIT
-- RP910-PRTY-NAM-SFX

FROM PMTPSM_APH_PRTY PRTY
INNER JOIN PMTPSM_APH_POL_RNW PRNW
ON PRTY.POL_RENEW_KEY = PRNW.POL_RENEW_KEY
AND PRTY.PART_KEY = PRNW.PART_KEY
INNER JOIN PMTPSM_APH_POL_DTL PDTL
ON PRNW.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PRNW.PART_KEY = PDTL.PART_KEY
LEFT OUTER JOIN PMTPSM_APH_ADRS ADRS
ON PRNW.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND PRNW.PART_KEY = ADRS.PART_KEY

--
-- NAME PREDICATES FOR APH_PRTY
--

WHERE PRTY.PRTY_LST_NAM LIKE W_SRCH_LAST_NAM
AND PRTY.PRTY_FRST_NAM LIKE W_SRCH_FRST_NAM
AND (
(PRTY.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PRTY.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
)
OR
(PRTY.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
AND
PRTY.ITR_EXPR_DT W_REF_DATE
)
)

--
-- APH_POL_DTL PREDICATES
--

AND (
(PDTL.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
)
OR
(CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
<= CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
AND
CASE WHEN PDTL.ITR_EXPR_DT = W_MAX_DATE
THEN PDTL.POL_END_DT
ELSE PDTL.ITR_EXPR_DT
END
W_REF_DATE
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_POL_DTL ROW
--

AND PDTL.PROC_EFF_TS =
(SELECT MAX(PDTL2.PROC_EFF_TS)
FROM PMTPSM_APH_POL_DTL PDTL2
WHERE PDTL2.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PDTL2.PART_KEY = PDTL.PART_KEY
AND (
(PDTL2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PDTL2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
)
OR
(PDTL2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
AND
PDTL2.ITR_EXPR_DT W_REF_DATE
)
)
)

--
-- APH_ADRS PREDICATES
--

AND (
(ADRS.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
AND
ADRS.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS.PROC_EFF_DT IS NULL
AND
ADRS.PROC_EFF_TM IS NULL
AND
ADRS.PROC_EXPR_DT IS NULL
AND
ADRS.PROC_EXPR_TM IS NULL
AND
ADRS.ITR_EFF_DT IS NULL
AND
ADRS.ITR_EXPR_DT IS NULL
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_ADRS ROW
--

AND ADRS.PROC_EFF_TS =
(SELECT MAX(ADRS2.PROC_EFF_TS)
FROM PMTPSM_APH_ADRS ADRS2
WHERE ADRS2.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND ADRS2.PART_KEY = ADRS.PART_KEY
AND (
(ADRS2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
AND
ADRS2.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS2.PROC_EFF_DT IS NULL
AND
ADRS2.PROC_EFF_TM IS NULL
AND
ADRS2.PROC_EXPR_DT IS NULL
AND
ADRS2.PROC_EXPR_TM IS NULL
AND
ADRS2.ITR_EFF_DT IS NULL
AND
ADRS2.ITR_EXPR_DT IS NULL
)
)
)
FETCH FIRST 70 ROWS ONLY
WITH UR;

Mark A wrote:
"dataguy" <ba*********@progressive.comwrote in message
news:11**********************@j72g2000cwa.googlegr oups.com...
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.

If you post the SQL, then maybe someone will be able to help you.
Dec 15 '06 #5

dataguy wrote:
When we tried to issue the statement similar to what you have below, we
kept getting an error complaining about the fetch. When we removed the
"fetch first xx rows only" and tried it, no problem.. I can post the
sql if you want it.
Serge Rielau wrote:
dataguy wrote:
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?
>
Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
>
Is this what you are looking for?
INSERT INTO SESSION.TEMP SELECT * FROM T FETCH FIRST 10 ROWS ONLY

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Please post the SQL. It can be very helpful.

B.

Dec 15 '06 #6

dataguy wrote:
Here is the SQL in Question:

Note.. We tried putting an open and closed paran around the select
statements and it didn't help.
INSERT
INTO SESSION.NAM_TBL
SELECT PRNW.POL_ID_NBR AS PolicyNumber,
PRNW.RENW_SFX_NBR AS PolicySuffix,
PDTL.POL_STRT_DT AS PolicyStartDate,
PDTL.POL_END_DT AS PolicyEndDate,
PDTL.POL_SRCE_CD AS PolicySourcecd,
PDTL.POL_ST_CD AS PolicyStateCd,
PDTL.PROD_CTGRY_CD AS ProductCategoryCd,
ADRS.PRTY_STR_NAM AS StreetName,
ADRS.PRTY_CITY_NAM AS CityName,
ADRS.PRTY_ST_CD AS StateCd,
ADRS.PRTY_ZIP_CD AS ZipCd,
ADRS.PRTY_ZIP_CD_EXTN AS ZipCdExtn,
PRTY.PRTY_TYP_CD AS PartyTypeCd,
PRTY.PRTY_BRTH_DT AS PartyDOB,
PRTY.PRTY_BSNS_IND AS PartyBusinessInd,
PRTY.PRTY_NAM AS PartyName

-- RP910-PRTY-LST-NAM
-- RP910-PRTY-FRST-NAM
-- RP910-PRTY-NAM-INIT
-- RP910-PRTY-NAM-SFX

FROM PMTPSM_APH_PRTY PRTY
INNER JOIN PMTPSM_APH_POL_RNW PRNW
ON PRTY.POL_RENEW_KEY = PRNW.POL_RENEW_KEY
AND PRTY.PART_KEY = PRNW.PART_KEY
INNER JOIN PMTPSM_APH_POL_DTL PDTL
ON PRNW.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PRNW.PART_KEY = PDTL.PART_KEY
LEFT OUTER JOIN PMTPSM_APH_ADRS ADRS
ON PRNW.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND PRNW.PART_KEY = ADRS.PART_KEY

--
-- NAME PREDICATES FOR APH_PRTY
--

WHERE PRTY.PRTY_LST_NAM LIKE W_SRCH_LAST_NAM
AND PRTY.PRTY_FRST_NAM LIKE W_SRCH_FRST_NAM
AND (
(PRTY.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PRTY.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
)
OR
(PRTY.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
AND
PRTY.ITR_EXPR_DT W_REF_DATE
)
)

--
-- APH_POL_DTL PREDICATES
--

AND (
(PDTL.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
)
OR
(CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
<= CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
AND
CASE WHEN PDTL.ITR_EXPR_DT = W_MAX_DATE
THEN PDTL.POL_END_DT
ELSE PDTL.ITR_EXPR_DT
END
W_REF_DATE
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_POL_DTL ROW
--

AND PDTL.PROC_EFF_TS =
(SELECT MAX(PDTL2.PROC_EFF_TS)
FROM PMTPSM_APH_POL_DTL PDTL2
WHERE PDTL2.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PDTL2.PART_KEY = PDTL.PART_KEY
AND (
(PDTL2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PDTL2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
)
OR
(PDTL2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
AND
PDTL2.ITR_EXPR_DT W_REF_DATE
)
)
)

--
-- APH_ADRS PREDICATES
--

AND (
(ADRS.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
AND
ADRS.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS.PROC_EFF_DT IS NULL
AND
ADRS.PROC_EFF_TM IS NULL
AND
ADRS.PROC_EXPR_DT IS NULL
AND
ADRS.PROC_EXPR_TM IS NULL
AND
ADRS.ITR_EFF_DT IS NULL
AND
ADRS.ITR_EXPR_DT IS NULL
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_ADRS ROW
--

AND ADRS.PROC_EFF_TS =
(SELECT MAX(ADRS2.PROC_EFF_TS)
FROM PMTPSM_APH_ADRS ADRS2
WHERE ADRS2.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND ADRS2.PART_KEY = ADRS.PART_KEY
AND (
(ADRS2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
AND
ADRS2.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS2.PROC_EFF_DT IS NULL
AND
ADRS2.PROC_EFF_TM IS NULL
AND
ADRS2.PROC_EXPR_DT IS NULL
AND
ADRS2.PROC_EXPR_TM IS NULL
AND
ADRS2.ITR_EFF_DT IS NULL
AND
ADRS2.ITR_EXPR_DT IS NULL
)
)
)
FETCH FIRST 70 ROWS ONLY
WITH UR;

Mark A wrote:
"dataguy" <ba*********@progressive.comwrote in message
news:11**********************@j72g2000cwa.googlegr oups.com...
>I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?
>
Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
If you post the SQL, then maybe someone will be able to help you.
Two questions:

1) If you remove the INSERT part of the statement, does the SELECT
statement execute without error?

2) What is the error returned?

B.

Dec 15 '06 #7
... which platform?

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Dec 15 '06 #8
Db2 is OS/390, but we are doing it from stored procedure builder on the
client.
Serge Rielau wrote:
.. which platform?

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Dec 15 '06 #9
We the select statement only and it works. Even if it was the select
statement, why would it work ok when I remove the Fetch statement?

As far as the error message, the person I'm working with has re-written
it to use a loop. It will take a bit of time to re-write it without.
I'll see if he can.
Brian Tkatch wrote:
dataguy wrote:
Here is the SQL in Question:

Note.. We tried putting an open and closed paran around the select
statements and it didn't help.
INSERT
INTO SESSION.NAM_TBL
SELECT PRNW.POL_ID_NBR AS PolicyNumber,
PRNW.RENW_SFX_NBR AS PolicySuffix,
PDTL.POL_STRT_DT AS PolicyStartDate,
PDTL.POL_END_DT AS PolicyEndDate,
PDTL.POL_SRCE_CD AS PolicySourcecd,
PDTL.POL_ST_CD AS PolicyStateCd,
PDTL.PROD_CTGRY_CD AS ProductCategoryCd,
ADRS.PRTY_STR_NAM AS StreetName,
ADRS.PRTY_CITY_NAM AS CityName,
ADRS.PRTY_ST_CD AS StateCd,
ADRS.PRTY_ZIP_CD AS ZipCd,
ADRS.PRTY_ZIP_CD_EXTN AS ZipCdExtn,
PRTY.PRTY_TYP_CD AS PartyTypeCd,
PRTY.PRTY_BRTH_DT AS PartyDOB,
PRTY.PRTY_BSNS_IND AS PartyBusinessInd,
PRTY.PRTY_NAM AS PartyName

-- RP910-PRTY-LST-NAM
-- RP910-PRTY-FRST-NAM
-- RP910-PRTY-NAM-INIT
-- RP910-PRTY-NAM-SFX

FROM PMTPSM_APH_PRTY PRTY
INNER JOIN PMTPSM_APH_POL_RNW PRNW
ON PRTY.POL_RENEW_KEY = PRNW.POL_RENEW_KEY
AND PRTY.PART_KEY = PRNW.PART_KEY
INNER JOIN PMTPSM_APH_POL_DTL PDTL
ON PRNW.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PRNW.PART_KEY = PDTL.PART_KEY
LEFT OUTER JOIN PMTPSM_APH_ADRS ADRS
ON PRNW.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND PRNW.PART_KEY = ADRS.PART_KEY

--
-- NAME PREDICATES FOR APH_PRTY
--

WHERE PRTY.PRTY_LST_NAM LIKE W_SRCH_LAST_NAM
AND PRTY.PRTY_FRST_NAM LIKE W_SRCH_FRST_NAM
AND (
(PRTY.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PRTY.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
)
OR
(PRTY.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
AND
PRTY.ITR_EXPR_DT W_REF_DATE
)
)

--
-- APH_POL_DTL PREDICATES
--

AND (
(PDTL.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
)
OR
(CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
<= CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
AND
CASE WHEN PDTL.ITR_EXPR_DT = W_MAX_DATE
THEN PDTL.POL_END_DT
ELSE PDTL.ITR_EXPR_DT
END
W_REF_DATE
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_POL_DTL ROW
--

AND PDTL.PROC_EFF_TS =
(SELECT MAX(PDTL2.PROC_EFF_TS)
FROM PMTPSM_APH_POL_DTL PDTL2
WHERE PDTL2.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PDTL2.PART_KEY = PDTL.PART_KEY
AND (
(PDTL2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PDTL2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
)
OR
(PDTL2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
AND
PDTL2.ITR_EXPR_DT W_REF_DATE
)
)
)

--
-- APH_ADRS PREDICATES
--

AND (
(ADRS.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
AND
ADRS.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS.PROC_EFF_DT IS NULL
AND
ADRS.PROC_EFF_TM IS NULL
AND
ADRS.PROC_EXPR_DT IS NULL
AND
ADRS.PROC_EXPR_TM IS NULL
AND
ADRS.ITR_EFF_DT IS NULL
AND
ADRS.ITR_EXPR_DT IS NULL
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_ADRS ROW
--

AND ADRS.PROC_EFF_TS =
(SELECT MAX(ADRS2.PROC_EFF_TS)
FROM PMTPSM_APH_ADRS ADRS2
WHERE ADRS2.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND ADRS2.PART_KEY = ADRS.PART_KEY
AND (
(ADRS2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
AND
ADRS2.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS2.PROC_EFF_DT IS NULL
AND
ADRS2.PROC_EFF_TM IS NULL
AND
ADRS2.PROC_EXPR_DT IS NULL
AND
ADRS2.PROC_EXPR_TM IS NULL
AND
ADRS2.ITR_EFF_DT IS NULL
AND
ADRS2.ITR_EXPR_DT IS NULL
)
)
)
FETCH FIRST 70 ROWS ONLY
WITH UR;

Mark A wrote:
"dataguy" <ba*********@progressive.comwrote in message
news:11**********************@j72g2000cwa.googlegr oups.com...
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
>
If you post the SQL, then maybe someone will be able to help you.

Two questions:

1) If you remove the INSERT part of the statement, does the SELECT
statement execute without error?

2) What is the error returned?

B.
Dec 15 '06 #10
dataguy wrote:
Db2 is OS/390, but we are doing it from stored procedure builder on the
client.
Could be DB2 for zOS on your release doesn't have FFnR in subqueries yet.

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

WAIUG Conference
http://www.iiug.org/waiug/present/Fo...Forum2006.html
Dec 15 '06 #11
The error message returned from stored procedure builder is as follows:

<LINE>'0DSNH199I E DSNHPARS LINE 374 COL 2 INVALID KEYWORD
"FETCH"; VALID SYMBOLS ARE: WITH UNION EXCEPT QUERYNO'</LINE>
Brian Tkatch wrote:
dataguy wrote:
Here is the SQL in Question:

Note.. We tried putting an open and closed paran around the select
statements and it didn't help.
INSERT
INTO SESSION.NAM_TBL
SELECT PRNW.POL_ID_NBR AS PolicyNumber,
PRNW.RENW_SFX_NBR AS PolicySuffix,
PDTL.POL_STRT_DT AS PolicyStartDate,
PDTL.POL_END_DT AS PolicyEndDate,
PDTL.POL_SRCE_CD AS PolicySourcecd,
PDTL.POL_ST_CD AS PolicyStateCd,
PDTL.PROD_CTGRY_CD AS ProductCategoryCd,
ADRS.PRTY_STR_NAM AS StreetName,
ADRS.PRTY_CITY_NAM AS CityName,
ADRS.PRTY_ST_CD AS StateCd,
ADRS.PRTY_ZIP_CD AS ZipCd,
ADRS.PRTY_ZIP_CD_EXTN AS ZipCdExtn,
PRTY.PRTY_TYP_CD AS PartyTypeCd,
PRTY.PRTY_BRTH_DT AS PartyDOB,
PRTY.PRTY_BSNS_IND AS PartyBusinessInd,
PRTY.PRTY_NAM AS PartyName

-- RP910-PRTY-LST-NAM
-- RP910-PRTY-FRST-NAM
-- RP910-PRTY-NAM-INIT
-- RP910-PRTY-NAM-SFX

FROM PMTPSM_APH_PRTY PRTY
INNER JOIN PMTPSM_APH_POL_RNW PRNW
ON PRTY.POL_RENEW_KEY = PRNW.POL_RENEW_KEY
AND PRTY.PART_KEY = PRNW.PART_KEY
INNER JOIN PMTPSM_APH_POL_DTL PDTL
ON PRNW.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PRNW.PART_KEY = PDTL.PART_KEY
LEFT OUTER JOIN PMTPSM_APH_ADRS ADRS
ON PRNW.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND PRNW.PART_KEY = ADRS.PART_KEY

--
-- NAME PREDICATES FOR APH_PRTY
--

WHERE PRTY.PRTY_LST_NAM LIKE W_SRCH_LAST_NAM
AND PRTY.PRTY_FRST_NAM LIKE W_SRCH_FRST_NAM
AND (
(PRTY.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PRTY.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
)
OR
(PRTY.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PRTY.ITR_EFF_DT <= W_REF_DATE
AND
PRTY.ITR_EXPR_DT W_REF_DATE
)
)

--
-- APH_POL_DTL PREDICATES
--

AND (
(PDTL.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
)
OR
(CASE WHEN PDTL.PROC_EXPR_DT = W_MAX_DATE
THEN TIMESTAMP (PDTL.POL_END_DT, PDTL.PROC_EXPR_TM)
ELSE PDTL.PROC_EXPR_TS
END
<= CURRENT_TIMESTAMP
AND
PDTL.ITR_EFF_DT <= W_REF_DATE
AND
CASE WHEN PDTL.ITR_EXPR_DT = W_MAX_DATE
THEN PDTL.POL_END_DT
ELSE PDTL.ITR_EXPR_DT
END
W_REF_DATE
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_POL_DTL ROW
--

AND PDTL.PROC_EFF_TS =
(SELECT MAX(PDTL2.PROC_EFF_TS)
FROM PMTPSM_APH_POL_DTL PDTL2
WHERE PDTL2.POL_RENEW_KEY = PDTL.POL_RENEW_KEY
AND PDTL2.PART_KEY = PDTL.PART_KEY
AND (
(PDTL2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
PDTL2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
)
OR
(PDTL2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
PDTL2.ITR_EFF_DT <= W_REF_DATE
AND
PDTL2.ITR_EXPR_DT W_REF_DATE
)
)
)

--
-- APH_ADRS PREDICATES
--

AND (
(ADRS.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS.ITR_EFF_DT <= W_REF_DATE
AND
ADRS.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS.PROC_EFF_DT IS NULL
AND
ADRS.PROC_EFF_TM IS NULL
AND
ADRS.PROC_EXPR_DT IS NULL
AND
ADRS.PROC_EXPR_TM IS NULL
AND
ADRS.ITR_EFF_DT IS NULL
AND
ADRS.ITR_EXPR_DT IS NULL
)
)

--
-- SUB SELECT TO RETRIEVE ONLY ONE APH_ADRS ROW
--

AND ADRS.PROC_EFF_TS =
(SELECT MAX(ADRS2.PROC_EFF_TS)
FROM PMTPSM_APH_ADRS ADRS2
WHERE ADRS2.POL_RENEW_KEY = ADRS.POL_RENEW_KEY
AND ADRS2.PART_KEY = ADRS.PART_KEY
AND (
(ADRS2.PROC_EFF_TS <= CURRENT_TIMESTAMP
AND
ADRS2.PROC_EXPR_TS CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
)
OR
(ADRS2.PROC_EXPR_TS <= CURRENT_TIMESTAMP
AND
ADRS2.ITR_EFF_DT <= W_REF_DATE
AND
ADRS2.ITR_EXPR_DT W_REF_DATE
)
OR
(ADRS2.PROC_EFF_DT IS NULL
AND
ADRS2.PROC_EFF_TM IS NULL
AND
ADRS2.PROC_EXPR_DT IS NULL
AND
ADRS2.PROC_EXPR_TM IS NULL
AND
ADRS2.ITR_EFF_DT IS NULL
AND
ADRS2.ITR_EXPR_DT IS NULL
)
)
)
FETCH FIRST 70 ROWS ONLY
WITH UR;

Mark A wrote:
"dataguy" <ba*********@progressive.comwrote in message
news:11**********************@j72g2000cwa.googlegr oups.com...
I am trying to insert into a temporary table but only the first n
number of rows. I thought I could use the combination of insert into
and fect first row command ,but it won't work. Does anyone know why?

Any other suggestions other than writing a loop? This is in a db2 sql
stored procedure that is called from another db2 sql stored proc.
>
If you post the SQL, then maybe someone will be able to help you.

Two questions:

1) If you remove the INSERT part of the statement, does the SELECT
statement execute without error?

2) What is the error returned?

B.
Dec 15 '06 #12
DB2 for OS/390 doesn't support fetch for subselect nor fullselect even
Version 8.
FETCH is supported for select-statement.
Related part of syntax of INSERT statement is
INSERT INTO table-name|view-name fullselect isolation-clause QUERYNO
integer

DB2 for LUW support fetch for sub-select. So, fetch can be used in
INSERT.

Dec 16 '06 #13
If you are using DB2 for OS/390 V8. you can write
INSERT
INTO SESSION.NAM_TBL
WITH ISRT_DATA AS (
<your select statement>
)
SELECT A.*
FROM ISRT_DATA A
, LATERAL
(SELECT COUNT(*) RN
FROM ISRT_DATA B
WHERE B.PrimaryKey <= A.PrimaryKey
) AS BX
WHERE RN <= 70
WITH CS;

Dec 17 '06 #14
Thanks for the clarification
Tonkuma wrote:
DB2 for OS/390 doesn't support fetch for subselect nor fullselect even
Version 8.
FETCH is supported for select-statement.
Related part of syntax of INSERT statement is
INSERT INTO table-name|view-name fullselect isolation-clause QUERYNO
integer

DB2 for LUW support fetch for sub-select. So, fetch can be used in
INSERT.
Dec 18 '06 #15
Thanks to everyone who helped on this issue.
dataguy wrote:
Thanks for the clarification
Tonkuma wrote:
DB2 for OS/390 doesn't support fetch for subselect nor fullselect even
Version 8.
FETCH is supported for select-statement.
Related part of syntax of INSERT statement is
INSERT INTO table-name|view-name fullselect isolation-clause QUERYNO
integer

DB2 for LUW support fetch for sub-select. So, fetch can be used in
INSERT.
Dec 18 '06 #16

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: Evan Smith | last post by:
During a routine performance check using an event monitor, I discovered a class of query whose performance has me baffled. The monitor captured: SELECT * FROM EWM_CASE fetch first 1 rows only...
2
by: deebeetwo | last post by:
I am trying to select only a certain number of records from a table. It is easy enough with "fetch first" syntax. What complicates this a bit is the fact that I need to retrieve the number of rows...
13
by: RR | last post by:
Hi, It appears that DB2 has an arbitrary restriction on the use of "fetch first N rows". I want to insert into a table from a large table query, but only insert the first N rows: insert...
5
by: Bernd Hohmann | last post by:
Is there any way to create a dynamic row limit like "fetch first ? rows only" using the JDBC driver and a PreparedStatement? Bernd -- "Ja, alles meine Herren" sprach Fürst Lichnowsky. "Ooch...
9
by: Acupuncture | last post by:
Hi, I am developing a JDBC application and I encountered this problem (DB2 for ISeries). I want to do a select for update and also use the fetch first rows clause. This is my sql statement: ...
14
by: sangram.0149 | last post by:
hi, can someone plz help me on this one i need to fetch the first record from every group of records with the same emp id. i cannot use group by because i want to fetch all the fields...
3
by: nymano | last post by:
Hi. Just a brief question: Are "FETCH FIRST ROW ONLY" and "FETCH FIRST x ROWS ONLY" DB2 specific or SQL92? thanks for any help, nymano.
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.