×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
 
On 26 Apr 2012 10:01, Buzz Fenner wrote:
<<SNIP>>
What I actually had run through the script processor was this:
WITH temp (current,cus#) AS
   (SELECT curelc+curwtr+curswr AS current,cusnbr
     FROM adjprjlib.cmstrp1)
SELECT *
FROM temp
WHERE current>0
<<SNIP>>  Turns out 'current' is a reserved word used with the
special registers. I'm still learning SQL, so I had no idea. I spent
quite a bit of time banging my head against the wall and if I had
just cut/pasted the code to begin with, no doubt one of you guys
would have seen the problem immediately.  <<SNIP>>
  Including the details from the SQL0104 would have helped as well. 
Knowing that the error was issued per "Token > was not valid. Valid 
tokens: DATE PATH TIME SQLID SCHEMA ..." would have subtly implied that 
the word CURRENT had been used in place of BALANCE; even as nonsensical 
with regard to what was given, the obvious reply, would have been to ask 
if what was posted was really a copy\paste.
  As with the delimited column name suggestion in my earlier reply, 
that assists for reserved words as well.  The use of a delimited 
identifier can prevent such issues; e.g.:
     with
       temp (current) as (select intcol from qsys2/qsqptabl)
     select * from temp where "CURRENT">0
  For consistency however, perhaps better:
     with
       temp ("CURRENT") as (select intcol from qsys2/qsqptabl)
     select * from temp where "CURRENT">0
  To prevent ever having the issue arise for a previously functional 
statement, due to a newly added reserved word, the delimiters can be 
added to column names whenever\wherever.  The delimiters are optional in 
whatever context the usage as a column identifier can be safely assumed 
by the parser\syntax-checker.  Always best to review the list of 
reserved words from the most recent release, to know what identifiers to 
avoid or to delimit; e.g.:
IBM i 7.1 Information Center -> Database -> Reference -> SQL reference 
-> Reserved schema names and reserved words
_Reserved words_
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/db2/rbafzwordsre.htm
"This is the list of currently reserved DB2® for i words.
Words may be added at any time. For a list of additional words that may 
become reserved in the future, see the IBM® SQL and ANSI reserved words 
in the IBM SQL Reference Version 1 SC26-3255. ..."
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.