You have a typo in one of your field names?
In IBM i, SQLSTATE 42703 indicates an "undefined column or parameter name"
was detected in the SQL statement. This error usually occurs when a column
name specified in your query does not exist in the referenced table, or
there is a typo in the name.
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of K Crawford
Sent: Monday, January 19, 2026 2:48 PM
To: RPG400-L@xxxxxxxxxxxxxxxxxx
Subject: SQLSTATE 42703 in SQLRPGLE program
Below is part of my SQLRPGLE program.
I am getting SQLSTATE 42703 on the PREPARE statement.
What could it be?
The two ? (dynamic selections) SSAN is numeric and PLANID is char. I have
tried putting quotes around the ? for PLANID, but did not work.
I have copied this SQL into ACS-RSS and it runs fine.
Dcl-C SELECT_ActPlan CONST(' Select e.cobret, +
e.qbnum, e.cobrarnum, e.ssan, +
p.cvglevl, p.cvgtype, p.status, p.planid, +
p.planstrt, p.evntdate3, +
p.fdoc, p.ldoc, +
p.cbrstrt, p.cbrstop, +
p.termdate +
from lib1/cobraE e +
join lib1/cobraP p +
on e.qbnum = p.idnum +
where +
(e.ssan = ? ) +
and (p.planid = ? ) +
and (p.status in ( ''E '', ''ED'', ''E4'', ''TE'')) +
and (to_char(current date,''YYYYMMDD'') between p.PlanStrt +
and (case when p.EvntDAte3 = 0 then 20991231 else p.EvntDate3 end)
+
) +
and (to_char(current date,''YYYYMMDD'') between p.fdoc and p.ldoc) +
AND (to_char(current date,''YYYYMMDD'') between +
p.cbrstrt and p.cbrstop) +
AND ((to_char(current date,''YYYYMMDD'') between +
p.cbrstrt and p.TERMDATE) +
or (p.termdate = 0))');
Dcl-DS ActPlanDS Qualified;
cobret char(1);
qbnum zoned(7:0);
cobrarnum zoned(7:0);
ssan zoned(9:0);
cvglevl Char(4);
cvgtype Char(9);
status Char(2);
planid Char(40);
planstrt zoned(8:0);
planend zoned(8:0);
fdoc zoned(8:0);
ldoc zoned(8:0);
cbrstrt zoned(8:0);
cbrstop zoned(8:0);
termdate zoned(8:0);
End-DS;
SqlStmt1 = SELECT_ActPlan;
// Prepare the statement
exec sql
prepare dynStmt1 from SqlStmt1;
// Declare a cursor for the prepared statement
Exec SQL
DECLARE dynCursor1 CURSOR FOR dynStmt1;
// Open the cursor with parameters
Exec SQL
OPEN dynCursor1 USING :w_ssan
,:w_planid;
// Fetch the data into your data structure
Exec SQL
FETCH dynCursor1
INTO :ActPlanDS;
// Check if successful
If SQLSTATE = '00000';
// Process your data
--
Kerwin Crawford
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit:
https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
As an Amazon Associate we earn from qualifying purchases.