Postgres ECPG char[] 与 VARCHAR[]

Postgres ECPG char[] vs. VARCHAR[]

我们正在使用 ECPG 和主机变量连接到 postgres 数据库。我们试图了解何时使用 char[]VARCHAR[] 作为我们的主机绑定变量。该文档不提供任何 pros/cons 或用例。

例如:

给定列

x VARCHAR (10)

我为什么要使用

EXEC SQL BEGIN DECLARE SECTION;
 char theX[10];
EXEC SQL END DECLARE SECTION;
cout << theX;

对比说

EXEC SQL BEGIN DECLARE SECTION;
 VARCHAR theX[10];
EXEC SQL END DECLARE SECTION;
cout << theX.arr;

谢谢!

https://www.postgresql.org/docs/current/ecpg-variables.html

在 C 中使用哪种类型并不重要。正如 the documentation 所描述的,区别在于 VARCHAR 是一个还包含字符串长度的结构,而 char 是正常的以 null 结尾的 C 字符串。

如果需要长度,VARCHAR可能更方便。