Description
Directly read field values from a single record in the database.
Parameters
icTableName | input | character | |
icPrepare | input | character | Progress for each statement defining what record must be read. If more than one record matches the criteria, only first record is read. |
icFieldList | input | character | Comma seperated list of field names. |
ocValueList | output | character | chr(2) seperated list of field values. |
ihClass | input | handle | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program1/other.p)
&if defined(DEBUGSQL) > 0 &then
run SqlDebugWrite in {&TARGETPROCEDURE} ("* ":U + program-name(1), 1).
&endif
assign viQryid = -1.
run SqlQryOpenTable in {&TARGETPROCEDURE}
(icTableName,
icPrepare,
icFieldList,
output viQryid,
output oiReturnStatus).
if oiReturnStatus = 0
then run SqlQryExecute in {&TARGETPROCEDURE}
(viQryId, output viCols, output oiReturnStatus).
if oiReturnStatus = 0
then run SqlQryMoveNext in {&TARGETPROCEDURE}
(viQryId, output viRows, output oiReturnStatus).
if oiReturnStatus < 0
then do:
<M-7 run SqlErrorMessage (input ihClass (ihClass),
output viFcReturnSuper (oiReturnStatus)) in other>
if viQryId >= 0
then run SqlQryDestroy in {&TARGETPROCEDURE} (viQryId, output oiReturnStatus).
return.
end.
if viRows > 0
then do viCnt = 1 to num-entries(icFieldList):
vcValue = <M-8 getColumnValue (input viQryid (iiCmd),
input viCnt - 1 (iiCol)) in other>.
ocValueList = (if viCnt = 1 then "" else ocValueList + chr(2))
+ (if vcValue = ? then "?":U else vcValue).
end.
run SqlQryDestroy in {&TARGETPROCEDURE}
(viQryId, output oiReturnStatus).
assign oiReturnStatus = (if viRows = 0 then -4 else 0).