0

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

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);
}

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

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

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

4

1 回答 1

0

哟哟哟

我试过“插入”也可以使用指标,如果你想这样:

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,只需使指示符 < 0:

var1_ind = -1

在将 -1 分配给 var1_ind 后,无论 :var1 的值如何,它都会将 NULL 插入 DB 中的 var1

这是手册中的一些信息

如果值不为空,指示变量 val_ind 将为零,如果值为空,则为负数。

该指标还有一个作用:如果指标值为正,则表示该值不为空,但在存入宿主变量时被截断。

于 2015-03-27T03:31:30.120 回答