首页 > 解决方案 > 当 ProC SQL 结果为空时,将其获取为 -nan 而不是 0

问题描述

使用定义为的结构:

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 查询返回 X 和 Y 的 NULL 值时,它们在 U_DataInfo 中的变量取 0.000 作为值。

我们可以让他们 -nan 稍后在代码中检查这个吗?

标签: sqlcoraclenullproc

解决方案


推荐阅读