×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Mark,

Unmatched records probably result in null values in the fields you are
inserting into from the joined file.  You can define null indicator
variables as 5i 0 fields to handle whether the value is null.  The number of
these indicator variables needs to match the number of fields you are
inserting into.  It would look like this:

     C/exec sql
     C+ fetch C1 into :sitnbr :field1, :xxxx :field2,  :date8 :field3,
:date82 :field4,
     c+ :sitcls :field5, :situom :field6, :sprice :field7
     C/end-exec

**Notice no comma between the host variable and the indicator variable**

If a null is returned, as from an unmatched record on a join, then a
negative value will be placed in the indicator variables.

You could also do this:

D  hostDS    ds
D     sitnbr      1
D     xxxx        5
--etc--
D  nullDS    ds
D     field1      5i 0
D     field2      5i 0
--etc--

C/exec sql
C+ fetch c1 into :hostDS :nullDS
C/end-exec

Phil


> -----Original Message-----
> From: rpg400-l-admin@midrange.com [mailto:rpg400-l-admin@midrange.com]On
> Behalf Of MWalter@hanoverwire.com
> Sent: Thursday, September 13, 2001 4:40 PM
> To: rpg400-l@midrange.com
> Subject: SQL Problem
>
>
> Well, I had to 'override' the SQL preprocessor's code. I don't
> know what is
> gonna happen down the road but I they powers that be are chomping at the
> bit for this code.
>
> Here is the significant code:
>
>      c                   eval      statement =
>      c                              'SELECT a.itnbr, b.itdsc, a.edate,
> tdate,' +
>      c                              ' a.itcls, a.ituom, a.price, b.itcls '
> +
>      c                              'FROM Cntmst a LEFT OUTER JOIN Itemasa
> b ' +
>      c                              'ON a.itnbr = b.itnbr +
>      c                              WHERE cont# = ''' + %trim(cont#) + '''
> +
>      c                              ORDER BY ' + sortField
>
>       * SQL to prepare statement
>      C/exec sql
>      C+ prepare stmt from :statement
>      C/end-exec
>
>
>      C/exec sql
>      C+ declare C1 cursor for stmt
>      C/end-exec
>
>      C/exec sql
>      C+ open C1
>      C/end-exec
>
>      C                   ENDSR
>
>       * Fetch the records from the cursor
>      C     @fetch_record BEGSR
>
>      C/exec sql
>      C+ fetch C1 into :sitnbr, :xxxx,  :date8, :date82,
>      c+ :sitcls, :situom, :sprice
>      C/end-exec
>
>       * end of file
>      c                   if        (sqlstt = '02000' or sqlcod < 0) and
>      c                             sqlcod <> -305
>      c                   eval      sfl_end = *on
>      c                   endif
>
>      c                   if        sqlcod = -305
>      c                   eval      sitnbr = sql_00011
>      c                   eval      xxxx = sql_00012
>      c                   eval      date8 = sql_00013
>      c                   eval      date82 = sql_00014
>      c                   eval      sitcls = sql_00015
>      c                   eval      situom = sql_00016
>      c                   eval      sprice = sql_00017
>      c                   endif
>
>      C                   ENDSR
>
>
> If anyone has any information on why I'm receiving a sqlcod of -305
> (Indicator variable required) on a LEFT OUTER JOIN when there are
> non-matching primary records with the secondary record, I'd appreciate
> being left in on it. There aren't any indicator variables in the table. I
> didn't even think you could put indicator variables in a PF. At
> least using
> DDS.
>
> Thanks,
>
> Mark
>
>
> Mark Walter
> Sr. Programmer/Analyst
> Hanover Wire Cloth a div of CCX, Inc.
> mwalter@hanoverwire.com
> http://www.hanoverwire.com
> 717.637.3795 Ext.3040
>
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.