24使用动态描述区域的动态SQL.docx
- 文档编号:23797467
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:19
- 大小:2.18MB
24使用动态描述区域的动态SQL.docx
《24使用动态描述区域的动态SQL.docx》由会员分享,可在线阅读,更多相关《24使用动态描述区域的动态SQL.docx(19页珍藏版)》请在冰豆网上搜索。
24使用动态描述区域的动态SQL
第二十四章
使用动态描述符区域的动态SQL
本章解释如何使用系统描述区方法来处理动态SQL语句。
对于一条非参数化的非SELECTSQL语句,有关SQL语句的所有东西在编译时都是知道的。
处理这类的语句不涉及到系统描述区的使用,可以象下面的例子这样来处理。
#include
main()
{
printf(SampleESQLprogramrunning.\n\n);
$databasestores;
$preparesqlidfromDELETEFROMitems;
$executesqlid;
$closedatabase;
printf(\nProgrmaOver.\n);
}
处理一条参数化的非SELECT语句所涉及到的步骤列在上面。
第一步是把语句组装到字符串中,然后使用PREPARE语句来准备SQL语句。
下一步,必须为语句中使用的参数分配系统描述区。
然后,使用系统描述区中的参数(DATA)的域为参数设置正确的值。
一旦所有这些步骤完成,可以执行SQL语句。
完整的样例程序在下页。
完整的样例程序在下页。
完整的样例程序在下页。
完整的样例程序在下一页。
PUT语句把一个记录加到缓冲区,当缓冲区满了以后,把它里面的内容写到数据库中。
在缓冲区未满时,可以使用FLUSH语句来迫使插入记录到数据库中。
如果程序结束时没有关闭游标,缓冲区不会腾空,自从上次FLUSH操作以来放到缓冲区中的记录丢失。
不要期望程序结束时会自动关闭游标和腾空缓冲区。
完成上面的练习。
非参数化的SQL语句使用上面列出的步骤来完成。
如果字段需要保留,在获取下一条记录之前,把它们从宿主变量转移到普通的C变量中。
否则,下一条记录会覆盖当前的记录值。
GETDESCRIPTOR仅接受宿主变量。
可以使用GETDESCRIPTOR语句分配的空间,如果宿主变量是象下面这样定义的话:
$cahr*host_var;
完整的样例程序见下页。
完成一个参数化的SELECT语句的步骤列在上面。
该程序同没有WHERE子句的程序十分类似,区别在于,在前一个例子里,我们使用一个简单的OPEN语句,但是在这个例子里,使用OPENUSINGSQLDESCRIPTOR...。
所以,在打开游标之前,需要填写系统描述区。
该OPEN可以通过使用宿主变量来代替。
这里的目的是如何使用系统描述区来打开一个游标。
$OPEN之后的过程同非参数化SELECT语句的例子一样。
可以在OPEN之后为DESCRIBLE语句重用系统描述区,或者分配一个新的系统描述区。
完整的例子程序在下一页。
完成上面的练习。
答案
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24 使用 动态 描述 区域 SQL