Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » 发送和检索 Long 型值

 

发送 LONG 数据

本节说明如何将 LONG 值从嵌入式 SQL 应用程序发送到数据库。有关背景信息,请参见发送和检索 Long 型值

使用静态 SQL 时与使用动态 SQL 时的检索过程不同。

 ♦  发送 LONG 值(静态 SQL)
  1. 根据需要声明类型为 DECL_LONGVARCHAR、DECL_LONGNVARCHAR 或 DECL_LONGBINARY 的主机变量。

  2. 如果您要发送 NULL,请将指示符变量设置为负值。

    有关详细信息,请参见指示符变量

  3. 将主机变量结构的 stored_len 字段设置为数组字段中数据的字节数。

  4. 通过打开游标或执行语句发送数据。

下面的代码段说明使用静态嵌入式 SQL 发送 LONG VARCHAR 的机制。它并不是为实际的应用程序而准备的。



#define DATA_LEN 12800
EXEC SQL BEGIN DECLARE SECTION;
// SQLPP initializes longdata.array_len
DECL_LONGVARCHAR(128000) longdata;
EXEC SQL END DECLARE SECTION;

void set_test_var()
{
  // init longdata for sending data
  memset( longdata.array, 'a', DATA_LEN );
  longdata.stored_len = DATA_LEN;

  printf( "Setting test_var to %d a's\n", DATA_LEN );
  EXEC SQL SET test_var = :longdata;
}
 ♦  发送 LONG 值(动态 SQL)
  1. 根据需要将 sqltype 字段设置为 DT_LONGVARCHAR、DT_LONGNVARCHAR 或 DT_LONGBINARY。

  2. 如果您要发送 NULL,请将 * sqlind 设置为负值。

  3. 如果不是要发送 NULL,将 sqldata 字段设置为指向 LONGVARCHAR、LONGNVARCHAR 或 LONGBINARY 主机变量结构。

    可以使用 LONGVARCHARSIZE(n)、LONGNVARCHARSIZE(n) 或 LONGBINARYSIZE(n) 宏来确定在数组字段中容纳 n 字节的数据而要分配的总字节数。

  4. 将主机变量结构的 array_len 字段设置为分配给数组字段的字节数。

  5. 将主机变量结构的 stored_len 字段设置为数组字段中数据的字节数。它一定不能大于 array_len。

  6. 通过打开游标或执行语句发送数据。