南大通用GBase8s 常用SQL语句(177)

命名 PUT 中的程序变量

当准备 INSERT 语句时(请参阅 PREPARE 语句),您不可在它的 VALUES 子句中使用程序变量,但可通过问号(?)占位符表示值。请在 PUT 语句的 FROM 子句中罗列程序变量来提供缺少的值。

下列 GBase 8s ESQL/C 示例罗列在 PUT 语句中的主变量:

char answer [1] = 'y';

EXEC SQL BEGIN DECLARE SECTION;

   char ins_comp[80];

   char u_company[20];

EXEC SQL END DECLARE SECTION;

main()

{

   EXEC SQL connect to 'stores_demo';

   EXEC SQL prepare ins_comp from

      'insert into customer (customer_num, company) values (0, ?)';

   EXEC SQL declare ins_curs cursor for ins_comp;

   EXEC SQL open ins_curs;

   while (1)

      {

      printf("\nEnter a customer: ");

       gets(u_company);

      EXEC SQL put ins_curs from :u_company;

      printf("Enter another customer (y/n) ? ");

      if (answer = getch() != 'y')

         break;

      }

   EXEC SQL close ins_curs;

   EXEC SQL disconnect all;

}

指示符变量是可选的,但如果可能存在包含 NULL 值的 output_var ,则您应使用指示符变量。如果您指定未带 INDICATOR 关键字的指示符变量,则不可在 output_var indicator_var 之间放空格。

使用 USING 子句

如果您不知道在运行时要提供的参数的数目或其数据类型,则可从系统描述符或 sqlda 结构关联输入值。这些描述符结构都描述一个或多个替代问号(?)占位符的值的数据类型和内存位置。

每次执行 PUT 语句,都使用描述符结构描述的值替代 INSERT 语句中的问号(?)占位符。此过程类似于随同变量列表使用 FROM 子句,除了您的程序可完全控制数据值的内存位置之外。

指定系统描述符区域

SQL DESCRIPTOR 选项指定系统描述符区域的名称。

系统描述符区域中的 COUNT 域对应于准备好的语句中动态参数的数目。COUNT 的值必须小于或等于当以 ALLOCATE DESCRIPTOR 分配系统描述符区域时指定的项描述符的数量。您可以 GET DESCRIPTOR 语句取得域值,并以 SET DESCRIPTOR 语句设置该值。

系统描述符区域符合 X/Open 标准。

下列 GBase 8s ESQL/C 示例展示如何从系统描述符区域关联值:

EXEC SQL allocate descriptor 'desc1';

...

EXEC SQL put selcurs using sql descriptor 'desc1';

指定 sqlda 结构

使用 DESCRIPTOR 选项来引入指向 sqlda 结构的指针的名称。下列 GBase 8s ESQL/C 示例展示如何从 sqlda 结构关联值:

EXEC SQL put selcurs using descriptor pointer2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值