本节说明如何将 LONG 值从嵌入式 SQL 应用程序发送到数据库。有关背景信息,请参见发送和检索 Long 型值。
使用静态 SQL 时与使用动态 SQL 时的检索过程不同。
根据需要声明类型为 DECL_LONGVARCHAR、DECL_LONGNVARCHAR 或 DECL_LONGBINARY 的主机变量。
如果您要发送 NULL,请将指示符变量设置为负值。
有关详细信息,请参见指示符变量。
将主机变量结构的 stored_len 字段设置为数组字段中数据的字节数。
通过打开游标或执行语句发送数据。
下面的代码段说明使用静态嵌入式 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; } |
根据需要将 sqltype 字段设置为 DT_LONGVARCHAR、DT_LONGNVARCHAR 或 DT_LONGBINARY。
如果您要发送 NULL,请将 * sqlind 设置为负值。
如果不是要发送 NULL,将 sqldata 字段设置为指向 LONGVARCHAR、LONGNVARCHAR 或 LONGBINARY 主机变量结构。
可以使用 LONGVARCHARSIZE(n)、LONGNVARCHARSIZE(n) 或 LONGBINARYSIZE(n) 宏来确定在数组字段中容纳 n 字节的数据而要分配的总字节数。
将主机变量结构的 array_len 字段设置为分配给数组字段的字节数。
将主机变量结构的 stored_len 字段设置为数组字段中数据的字节数。它一定不能大于 array_len。
通过打开游标或执行语句发送数据。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |