宿主结构体变量

声明宿主结构体变量

宿主结构体包括输入宿主结构体和输出宿主结构体。输入宿主结构体用于将应用程序的数据传递到数据库中。当使用输入宿主结构时,必须 首先给输入宿主结构体的成员赋值。输出宿主结构体用于接收数据库数据。通过在SELECT,DML和FETCH的INTO子句中使用输出宿主结构体, 可以将数据库中的数据传递到应用程序中。宿主结构体变量是指与SQL语句交互的结构体变量,它也是宿主变量的一种,所以必须在 DECLARE段中说明。

声明一个宿主数组变量必须符合如下准则:

必须在DECLARE段明确说明;

不得与SQL保留字同名;

必须使用C 数据类型来声明宿主结构体变量;

必须确保神通数据库数据类型和C 数据类型的正确的对应关系。

下面给出了声明宿主结构体变量的实例:

EXEC SQL BEGIN DECLARE SECTION;

struct {

int id;

char name[10];

float grade;

}stu_struct;

struct stu_struct {

int id;

char name[10];

float grade;

}*pstu_struct;

EXEC SQL END DECLARE SECTION;

注解

结构体成员的数据类型以及顺序必须与内嵌SQL语句中列的数据类型和顺序匹配。 不能使用嵌套宿主结构。 不能使用C联合(union)作为宿主结构,也不能在宿主结构中嵌套联合。

使用宿主数组变量

使用一个宿主数组变量必须符合如下准则:

必须先声明后使用;

在SQL语句里必须以冒号(:)作前缀;

在C语句中不得以冒号作前缀;

可以在SELECT,DML,和FETCH的INTO子句中使用;

可以定义指针宿主结构体,当使用指针宿主结构体时必须定义结构名,并且必须为结构变量分配内存空间;

可以定义结构体数组变量。

当使用输入数组结构时,必须首先给输入宿主结构的成员赋值。