Reads an arbitrary number data elements contained in a single row of a table-formatted query result. The data elements must be identified by their common row number and their individual column names.
This function is only applicable on the results from query functions that are invoked with the option RESULT_AS_TABLE.
Related functions: edmiExecuteQueryBN, edmiExecuteQueryBNEx, edmiFreeQueryResult, edmiGetQueryResultColumnBN.
Header:
#include "sdai.h"
Prototype:
EdmiError edmiGetQueryResultColumnsBN (SdaiQueryResult queryResult,
SdaiInteger rowNumber,
SdaiInteger numberColumns,
/* [SdaiString columnName,
SdaiPrimitiveType valueType,
void *value] */
...);
Arguments:
queryResult |
The returned result of a query function. This parameter must be the result of a query that was called with the option RESULT_AS_TABLE. See edmiExecuteQueryBN. |
rowNumber |
The row number to read in the query result table. The number of rows in the table is stored in the rows element of the <qResult> data structure. |
numberColumns |
The number of columns to read from the row identified by <rowNumber>. |
columnName |
The name of a column for which to read a value. |
valueType |
The primitive type of the data element to be read. See section SDAI Data Types |
value |
Variable that will receive the value identified by its <rowNumber> and <columnName>. |
Returns:
A completion code of datatype EdmiError is the returned function value. The completion code has the following values:
Completion code = 0 : Operation successfully performed.
Completion code != 0: Error in operation. Completion code is an EDMinterface error code. Use edmiGetErrorText to get the error text corresponding to the error code.
Example:
EdmiError rstat;
int i;
SdaiString name, phoneNo, prof;
SdaiInteger age;
SdaiQueryResult queryResult;
SdaiModel modId;
. . .
/* Execute the query function */
rstat = edmiExecuteQueryBN(modId, "FriendQuerySchema",
"GetFriendBySexAndName",
2, RESULT_AS_TABLE, &queryResult,
sdaiSTRING, "*",
sdaiENUMERATION, "MALE");
printf("My male friends are:");
for (i=0;i<queryResult->rows;i++) {
if (rstat = edmiGetQueryResultColumnsBN(queryResult, i, 4,
"NAME", sdaiSTRING, &name,
"AGE", sdaiINTEGER, &age,
"PHONE NUMBER", sdaiSTRING, &phoneNo,
"POFESSION", sdaiSTRING, &prof)) {
printf("\nError %d in edmiGetQueryResultColumnsBN: %s", rstat,
edmiGetErrorText(rstat));
goto err;
}
printf("\n%s (%d), %s, <%s>", name, age, phoneNo, prof);
}
edmiFreeQueryResult(queryResult);
. . .