ecpg 使用主机变量插入空值 (postgreSQL)

ecpg insert null with host variable (psotgreSQL)

我想用 ecpg 主机变量向 psql table 插入一个空值,但我不知道该怎么做,下面是一个简单的例子:

EXEC SQL BEGIN DECLARE SECTION;
char var1; 
int var2;
EXEC SQL END DECLARE SECTION;

int main(){
  EXEC SQL CONNECT TO .....
  create();
  insert();
  EXEC SQL COMMIT WORK;
  return 0;
}
void create(){ 
  CREATE TABLE mytable(var1 char(10), var2 int );
}

void insert(){
  EXEC SQL INSERT INTO mytable (var1, var2 ) VALUE (:var1, :var2);
}

我想在数据库中的 var1 和 var2 中插入 NULL,有谁知道如何使用主机变量 (:var1, :var2)

*将":var1"替换为"NULL"效果很好,但似乎不是一个好方法。

*我知道它可以通过指标判断变量是否为null http://www.postgresql.org/docs/8.3/static/ecpg-variables.html 但它没有告诉我如何使用此方法插入或更新值?

呜呜呜

我试过 "insert" 也可以使用指标,如果你喜欢这个:

short var1_ind, var2_ind;

void insert(){
  EXEC SQL INSERT INTO mytable (var1, var2 ) 
  VALUE (:var1 INDICATOR :var1_ind, :var2 INDICATOR :var2_ind);
}

如果要在var1中插入NULL,只需使indicator < 0:

var1_ind = -1

将-1赋给var1_ind后,无论:var1的值是多少,它都会将NULL插入到DB中的var1中

这是手册中的一些信息

The indicator variable val_ind will be zero if the value was not null, and it will be negative if the value was null.

The indicator has another function: if the indicator value is positive, it means that the value is not null, but it was truncated when it was stored in the host variable.