Использование структуры, определенной как:
EXEC SQL BEGIN DECLARE SECTION;
typedef struct U_DataInfo{
char Cfg_Name[51];
int ID;
// Others elements
double X;
double Y;
} U_DataInfo;
EXEC SQL END DECLARE SECTION;
Используемый запрос прост как:
SELECT DISTINCT CFG_NAME, ID, /* some columns */, X, Y
FROM table vi
LEFT JOIN other_table ON other_table.other_id = vi.id
LEFT JOIN /* other joins */
/* where conditions */
В результатах X и Y могут быть NULL.
Затем используя курсор как:
U_DataInfo VL_Elem;
// Declare a dynamic cursor
EXEC SQL DECLARE SQL_DataCursor STATEMENT;
EXEC SQL PREPARE SQL_DataCursor FROM :SelectQuery;
EXEC SQL DECLARE DataCursor CURSOR FOR SQL_DataCursor;
// Open the cursor
EXEC SQL OPEN DataCursor;
// Some stuff and while...
EXEC SQL FETCH DataCursor
INTO :VL_Elem.Cfg_Name,
:VL_Elem.ID,
// Some Stuff
:VL_Elem.X,
:VL_Elem.Y;
// Some stuff
EXEC SQL CLOSE DataCursor;
Всякий раз, когда запрос SQL возвращает значения NULL для X и Y, их переменные в U_DataInfo принимают значение 0,000.
Можем ли мы сделать их -nan, чтобы иметь возможность проверить это позже в коде?