4.5. 传递数据

要从程序中向数据库传递数据,比如,查询中的参数,或者从数据库里 向程序传回的数据,想包含这类数据的 C 变量必须在一个特殊的标记段 里面声明,这样嵌入的 SQL 预处理器就会明白要做什么。

这个段以下面的代码开头

EXEC SQL BEGIN DECLARE SECTION;

以下面的代码结束

EXEC SQL END DECLARE SECTION;

在这两行之间,是普通的 C 变量声明,比如

int   x;
char  foo[16], bar[16];

这些声明也同时以普通 C 变量的形式回显到输出文件中, 因此,我们不必再次声明他们。那些不准备在 SQL 命令里使用的 变量可以像通常一样在这些特殊的段外面生命。

结构或者联合的定义也必须在 DECLARE 段中列出。 否则,预处理器就无法处理这些类型,因为它不知道定义。

特殊的类型 VARCHARVARCHAR2 对每个变量都转化成一个叫 struct 的名字。像下面这样的声明:

VARCHAR var[180];

转化成

struct varchar_var { int len; char arr[180]; } var;

这个结构适合于和 SQL 数据类型 varchar 的数据交互。

To use a properly declared C variable in an SQL statement, write :varname where an expression is expected. See the previous section for some examples. 要在 SQL 语句中使用经过合适声明过的 C 变量,要在表达式出现的地方 写 :变量名。 参阅前面一节获取一些例子。