GBASE南大通用技术分享:GBase 8s数据库PUT 语句简介

29 阅读1分钟

南大通用GBase 8s数据库使用 PUT 语句在插入缓冲区中存储一行。

用法

此语句为对 SQL 的 ANSI/ISO 标准的扩展。您可随同 ESQL/C 使用此语句。

PUT 将行存储在打开游标时创建的插入缓冲区中。

如果当该语句执行时该缓冲区没有空间存储新行,则将被缓冲的行成块写到数据库,并清空缓冲区。因此,一些 PUT 语句执行导致将行写到数据库,而一些不写。您可使用 FLUSH 语句来将缓冲的行写到数据库,而不添加新行。在关闭 Insert 游标之前,CLOSE 语句写所有余下的行。

如果当前的数据库使用显式的事务,您必须在一事务之内执行 PUT 语句。

下列示例使用 GBase 8s ESQL/C 中的 PUT 语句:

EXEC SQL prepare ins_mcode from

'insert into manufact values(?,?)';

EXEC SQL declare mcode cursor for ins_mcode;

EXEC SQL open mcode;

EXEC SQL put mcode from :the_code, :the_name;

PUT 语句不是 X/Open SQL 语句。因此,如果您在 X/Open 模式下编译 PUT 语句,则会得到警告信息。

提供插入的值

插入的行中的值可来自下列来源之一:

  • 写到 INSERT 语句内的常量值
  • 在 INSERT 语句中命名的程序变量
  • 在 PUT 语句的 FROM 子句中的程序变量

在由 sqlda 结构寻址的内存中准备的值,或系统描述符区域,然后在 PUT 语句的USING 子句中指定。

descriptor 或 sqlda_pointer 引用的系统描述符区域或 sqlda 结构必须定义每一值的数据类型和内存位置,对应于准备好的 INSERT 语句中的问号(?)占位符。