读取值并存储在主变量中的问题?

时间:2011-08-16 14:23:49

标签: c oracle-pro-c

我的程序从文件中读取记录,对于文件中的每条记录,它从DB中获取值。我在Pro * C程序中声明了一个宿主变量。我在程序中的一个select查询中使用了该宿主变量。每个记录都不会清除变量的内存。

例如,对于第一条记录,sql查询获取“ABCD”。然后对于第二条记录,查询将获取“EFGHIJKL”。对于第三个记录,DB中的实际值是“GHI”,但内存不会被清除,并打印“GHIHIJKL”。

如何解决?

2 个答案:

答案 0 :(得分:1)

这基本上是你应该做的。还有一个Pro * C内联设置应该自动执行,但我遇到了一些问题,所以我更喜欢这个快速而简单的解决方案。

VARCHAR var[50+1];      /* Add 1 char more than the size of the queried column of the database */

EXEC SQL SELECT thing INTO :var WHERE /* whatever */

if(sqlca.sqlcode == 0) 
  var.arr[var.len] = 0;      /* Add the \0 char at the end of you var.

答案 1 :(得分:0)

您应该使用数据库调用提供的长度,使您能够处理包含NUL字节的数据。

或者您使用给定长度手动终止字符串。这仅适用于“NUL-less”字符串。