20.提高ESQL/C程序的运行效率

20.提高ESQL/C程序的运行效率

ID:41833248

大小:460.39 KB

页数:18页

时间:2019-09-03

20.提高ESQL/C程序的运行效率_第1页
20.提高ESQL/C程序的运行效率_第2页
20.提高ESQL/C程序的运行效率_第3页
20.提高ESQL/C程序的运行效率_第4页
20.提高ESQL/C程序的运行效率_第5页
资源描述:

《20.提高ESQL/C程序的运行效率》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第二十章提高ESQL/C程序的运行效率提咼ESQL/C程序的运彳丁效率目标学完本章后你将能够:•动态定义某些SQL语句使之重复执行更加有效.•通过向数据库服务器发送一组SQL语句执行以减少管道通信.•释放不再需要的内存.木章讲述如何提高程序的运行效率,例如,要重复执行SQL语句吋怎样改进程序。在本材料屮引入了一些动怂「SQ厶专题的内容,有关动态SQL将在AdvancedINFORMIX-ESQUC课程中详细讨论。编译时SQL语句的转换1•交互式SQL语句存放在字符串中.2•还存放描述输入和输出数据的信息3.调用库函数处理SQL请求.可以通过编

2、写C语句,并包括进来特殊的头文件和SQL语句,从而创建ESQL/C程序。然后,运行esql预编译器来处理该程序,esql接受要处理的代码,读入所有的SQL语句,并把它们翻译成C的代码。正如在前面的章节提到过的那样,嵌入的SQL语句可以是所有的可交互式的SQL语句,例如1,在INFORMIX-DBAccess中使用的SQL语句。嵌入的SQL语句也有一些是自己独有的,这些语句处理编翠、游标和动态SQL。当esql读到一条象WHENEVER的指令,它从代码中去掉该指令,并从该处开始捕获所说明的错误。当esql读到有关游标操作的SQL语句,象OPEN

3、等,它把这些语句简单翻译为对特定函数的调用。当tsql读到动态SQL语句,PREPARE等,它把这些语句简单翻译为对特定函数的调用。但是,当esql读到象INSERT、SELECT.UPDATE或DELETE之类的语句时,它在一个私有的、局部块中完成一系列的事情:•把SQL语句存放到一个字符数组中。•如果有的话,把所有的斂数据和樹胡数据有关的描述信息存储起来。•调用一个特定的函数来处理SQL请求。可以浏览esql产生的C代码来查看这一点。關的转换第1步?存放SQL语句在将SQL语句转换成C代码时,esql首先忽略所有的主变晟并将SQL语句存储

4、在一个字符数组中.Sinsertintocustomer(phone,company)values($PhoneLc10.$CompanyLc20);sqlcmdtxt

5、为数据留出位置.丫指向SQL文本.捉离ESQIJC程序的运行效率在程序运行时,SQL语句仅是作为字符串存在于内存中的某个区域。当esql预编译程序时,它产生一个指向该字符串的指针。(实际上,它建立起一个字符指针数组,每个指针指向一段SQL文本。)上面就是这样的一个存放SQL文本的例子。在该例子中,注意到两个宿主变量被两个问号所代替(?):它们是实际数据的占位符。为理解该替换,

6、需要明白编译源代码的一个基本目的:为数据值提供地址信息。编写源代码时,使用符号来引用变量数据,把它们称为宿主变量。但是,程序运行时,对此计算机所能理解的唯一事情是数据的值和地址,它并/理解对于符号的引用。为从符号引用转换为对机器地址的访问,需要编译源程序。从SQL语句得到的SQL文本不会有任何的符号内存引用(宿主变量)。在翻译的第3步,这一点你马上就能看到,一个特定的函数在痙侈运行的把该文本传递该数据库服务器。在运行时刻,没有诸如符号引用之类的东西,只有地址和数据的值。如果该函数传递的是对符号的引用,象SPhoneLclO,服务器试图把它解释

7、为某些SQL对象的名称,从而导致错误。这就是为什么要使用问号来代替宿主变量。關的转换第1步?存放SQL语句在将SQL语句转换成C代码时,esql首先忽略所有的主变晟并将SQL语句存储在一个字符数组中.Sinsertintocustomer(phone,company)values($PhoneLc10.$CompanyLc20);sqlcmdtxt

8、为数据留出位置.丫指向SQL文本.捉离ESQIJC程序的运行效率在程序运行时,SQL语句仅是作为字符串存在于内存中的某个区域。当esql预编译程序时,它产生一个指向该字符串的指针。(实际上,它建立

9、起一个字符指针数组,每个指针指向一段SQL文本。)上面就是这样的一个存放SQL文本的例子。在该例子中,注意到两个宿主变量被两个问号所代替(?):它们是实际数据的占位符。为理解该替换,需要明白编译源代码的一个基本目的:为数据值提供地址信息。编写源代码时,使用符号来引用变量数据,把它们称为宿主变量。但是,程序运行时,对此计算机所能理解的唯一事情是数据的值和地址,它并/理解对于符号的引用。为从符号引用转换为对机器地址的访问,需要编译源程序。从SQL语句得到的SQL文本不会有任何的符号内存引用(宿主变量)。在翻译的第3步,这一点你马上就能看到,一个特

10、定的函数在痙侈运行的把该文本传递该数据库服务器。在运行时刻,没有诸如符号引用之类的东西,只有地址和数据的值。如果该函数传递的是对符号的引用,象SPhoneLclO,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。