📄 1796.html
字号:
short *C;<br>
char **X;<br>
short *Y;<br>
short *Z;<br>
};<br>
<br>
该结构的成员函数在动态SQL方法四中发挥着重要的作用,故在这里进行较详尽的介绍:<br>
<br>
·变量N:<br>
<br>
变量N用于指定查询列表项或占位符的最大个数。在执行DESCRIBE命令前,必须将变量N设置为查询列表项或占位符的最大个数;在执行了DESCRIBE命令后,还必须将变量N设置为存储在变量F中的实际变量数。<br>
<br>
·变量V:<br>
<br>
变量V是指向数据缓冲区地址数组的指针,该数据缓冲区用于存储查询列表项或绑定变量的值。当分配描述区时,函数sqlald()会将V[0]到V[N-1]设置为0。该函数语法如下:<br>
<br>
descriptor_name=sqlald(max_vars,max_name,max_ind_name);<br>
<br>
参数说明如下:<br>
<br>
·max_vars:查询列表项或占位符的最大个数。<br>
<br>
·max_name:查询列表项名称或占位符名称的最大长度。<br>
<br>
·max_ind_name:占位符指示变量名称的最大长度。<br>
<br>
函数sqlald()只用于非线程应用。而如果要在线程应用中完成同样的功能,则需要使用函数sqlaldt()。另外,也可以使用SQLLIB的新函数SQLSQLDAAlloc(),该函数既可用于线程应用,又可用于非线程应用。<br>
<br>
对于查询描述区来说,在执行FETCH命令前必须为变量V分配内存。语句EXEC SQL FETCH…USINGDESCRIPTOR…将查询列表数据存储到了由V[0]到V[N-1]所指向的数据缓冲区中。其中,第i个值存储在V[i-1]所指向的数据缓冲区中。<br>
<br>
对于绑定描述区来说,在执行OPEN命令前必须为变量V分配内存。语句EXEC SQL OPEN…USINGDESCRIPTOR…将使用由V[0]到V[N-1]所指向的绑定变量值来执行动态SQL语句。其中,第i个绑定变量的值存储在V[i-1]所指向的数据缓冲区中。<br>
<br>
·变量L:<br>
<br>
变量L是指向存储在数据缓冲区中的查询列表值或绑定变量值的长度数组的指针。<br>
<br>
对于查询描述区来说,DESCRIBESELECT LIST命令会将长度数组设置为每个查询列表项的最大长度。各种数据类型的长度是各不相同的。对于CHAR或VARCHAR2类型的查询列表项来说,DESCRIBE SELECT LIST将L[i]设置为查询列表项的最大长度;而对于NUMBER类型的查询列表项来说,分别被保存到了,通过调用函数sqlpre()可以从L[i]中读取到精度和标度值。函数sqlpre()的语法如下:<br>
<br>
sqlpre(long*length,int*precision,int*scale);<br>
<br>
该函数的原型在sqlcpr.h文件中。参数说明如下:<br>
<br>
·length:指向存储NUMBER值长度的长整数变量的指针。对于变量L来说,长度被存储到L[i]中,而精度和标度分别存储在该变量的低字节和高字节中。<br>
<br>
·precision:指向整数变量的指针,NUMBER值的精度返回到该变量中。<br>
<br>
·scale: 指向整数变量的指针,NUMBER值的标度返回到该变量中。<br>
<br>
该函数只能用于非线程应用。而如果要在线程应用中完成同样功能,则需要使用函数sqlprct()。另外,也可以使用SQLLIB的新函数SQLNumberProV6(),该函数既可用于线程应用又可用于非线程应用。<br>
<br>
在执行FETCH命令前,还必须设置L[i]。例如,当将NUMBER值转换为char类型时,应该将L[i]设置为精度加二(也即数字位数+符号位+小数点);而当将NUMBER值转换为float类型时,应该将L[i]设置为浮点数的长度。<br>
<br>
对于绑定描述区来说,在执行OPEN命令前必须设置变量L。例如,我们可以通过使用函数strlen()获得绑定变量字符串的长度,尔后将变量L设置为该长度值。<br>
<br>
·变量T:<br>
<br>
变量T是指向查询列表值或绑定变量值的数据类型代码数组的指针,这些数组类型代码确定了如何进行数据类型转换。<br>
<br>
下面列出了Oracle内部数据类型所对应的代码:<br>
<br>
Oracle内部数据类型 数据类型代码<br>
<br>
VARCHAR2 1<br>
NUMBER 2<br>
LONG 8<br>
ROWID 11<br>
DATE 12<br>
RAW 23<br>
LONG ROW 24<br>
CHARTER(或VHAR) 96<br>
MISLABLE 106<br>
<br>
下面列出了Oracle外部数据类型所对应的代码以及C数据类型:<br>
<br>
<br>
Oracle内部数据类型 数据类型代码 C数据类型<br>
VARCHAR2 1 char[n]<br>
NUMBER 2 char[n](n 22)<br>
INTEGER 3 int<br>
FLOAT 4 float<br>
STRING 5 Float char[n+1]<br>
VARNUM 6 char[n](n 22)<br>
DECIMAL 7 float<br>
LONG 8 char[n]<br>
VARCHAR 9 char[n+2]<br>
ROWID 11 char[n]<br>
DATE 12 char[n]<br>
VARRAW 15 char[n]<br>
RAW 23 unsigned Char[n]<br>
LONG RAW 24 unsigned Char[n]<br>
UNSIGNED 68 unsigned int<br>
DISPLAY 91 char[n]<br>
LONG VARCHAR 94 char[n+4]<br>
LONG VARRAW 95 unsigned char[n+4]<br>
CHARTER(或VHAR) 96 char[n]<br>
MISLABLE 106 char[n]<br>
<br>
对于查询描述区来说,DESCRIBESELECT LIST 命令将Oracle内部数据类型所对应的代码返回到了数据类型代码数组中。在使用FETCH命令检索数据时,Oracle会自动在内部和外部数据类型间进行转换,但对于有些数据类型在执行FETCH命令前就需要进行数据类型转换。对于字符数据来说,比较容易处理,但是有些类型的数据处理起来可能比较困难,此时就需要重新设置T的元素了。例如,将NUMBER的值重置为FLOAT或INT。<br>
<br>
T[i]的高位存储着第i个查询列表项的NULLNOTNULL状态信息。在执行OPEN或FETCH命令前必须清除该位,这可以通过调用函数sqlnul()来完成。函数sqlnul()的语法如下:<br>
<br>
Sqlnul(unsigned short *value_type,unsigned short *type_code,int*null_status);<br>
<br>
参数说明如下:<br>
<br>
·values_type:指向无符号短整数变量的指针,该变量存储着查询列表项的数据代码类型,而数据类型存储在T[i]中。<br>
<br>
·type_code:指向无符号短整数变量的指针,该变量返回了查询列表项的数据类型代码。<br>
<br>
·null_status:指向整数变量的指针,该变量返回了查询列表项的NULLNOT NULL状态。其中,1表示允许该列为空,而0表示不允许该列为空。<br>
<br>
对于绑定描述区来说,DESCRIBEBIND VARIABLES命令将数据类型代码数组设置为0。在执行OPEN命令前必须设置存储在每个元素中的数据类型代码,该代码表示了V[i]所指向的数据缓冲区中数据的外部存储类型。一般情况下,绑定变量值都被存储在字符串中,所以数据类型数组元素均被设置为1(VARCHAR2的数据类型代码),当然也可使用数据类型代码5(STRING)。<br>
<br>
·变量I:<br>
<br>
变量I是指向数据缓冲区地址数组的指针,在该数据缓冲区中存储着指示变量值。<br>
<br>
对于查询描述区来说,在执行FETCH命令前。当执行EXEC SQL FETCH…USINGDESCRIPTOR…语句时,如果第i个查询列表值为NULL,那么I[i]所指向的指示变量值被设置为-1,否则被置为0(表示值为NOT NULL)或正整数(表示值被截断)。<br>
<br>
对于绑定描述区来说,在执行命令前必须为变量I分配内存。当执行EXECSQL OPEN…USING DESCRIPTOR…语句时,I[i]所指向的数据缓冲区可以确定第i个绑定变量是否有NULL值。如果变量值为-1,则相应的绑定变量值为NULL。<br>
<br>
·变量F:<br>
<br>
变量F是执行了DESCRIBE命令所找到的查询列表项或占位符的实际位数。如果变量F的值小于0,则表示找到的查询列表项或占位符个数太多,超出了描述区尺寸。<br>
<br>
·变量S:<br>
<br>
变量S是指向数据缓冲区地址数组的指针,在该数据缓冲区中存储着查询列表项或占位符的名称。<br>
<br>
在执行了DESCRIBE命令后,第i个查询列表项或占位符的名称被保存到S[i-1]所指向的数据缓冲区中。<br>
<br>
·变量C:<br>
<br>
变量C是指向数组的指针,该数组保存着查询列表项或占位符名称的当前长度。<br>
<br>
在执行了DESCRIBE命令后,元素C[0]到C[N-1]被设置为每个查询列表项或占位符名称的实际字符个数。<br>
<br>
在SQLDA中还有其它几个变量,包括变量M、变量X、变量Y、变量Z,因其作用在程序中相对次要,这里不作介绍。<br>
<br>
<br>
<br>
[目录]<br>
<br>
--------------------------------------------------------------------------------<br>
<br>
<br>
编译和链接<br>
<br>
在系统特定的Oracle文件内具有关于如何编译和链接Pro*C/C++应用程序的指令,在UNIX系统中有一个make文件,在demo目录中称为proc.mk。执行此程序即可方便地完成如下两项功能:<br>
·将内嵌SQL和PL/SQL转换为对Oracle运行库的调用,同时生成转换后的C或C ++源代码。<br>
<br>
·经过编译和链接生成可执行程序。<br>
<br>
执行编译和链接时在UNIX命令行中输入命令:<br>
<br>
make –f proc.mk [源程序名]<br>
<br>
即可将后缀为.pc的源文件编译为后缀为.exe的可执行文件。<br>
</FONT><br>
</TD>
</TR>
<TR>
<TD colSpan=2><FONT
class=middlefont></FONT><BR>
<FONT
class=normalfont>全文结束</FONT> </TD>
</TR>
<TR>
<TD background="images/dot.gif" tppabs="http://www.linuxhero.com/docs/images/dot.gif" colSpan=2
height=10></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></TD>
<TD vAlign=top width="20%"
background="images/line.gif" tppabs="http://www.linuxhero.com/docs/images/line.gif" rowSpan=2>
<DIV align=center>
<table class=tableoutline cellspacing=1 cellpadding=4
width="100%" align=center border=0>
<tr class=firstalt>
<td noWrap background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colspan=2 height=21>
<font class=normalfont><b>所有分类</b></font></td>
</tr>
<tr class=secondalt> <td noWrap width=27%> <font class=normalfont>1:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type1.html" tppabs="http://www.linuxhero.com/docs/type1.html">非技术类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>2:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type2.html" tppabs="http://www.linuxhero.com/docs/type2.html">基础知识</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>3:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type3.html" tppabs="http://www.linuxhero.com/docs/type3.html">指令大全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>4:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type4.html" tppabs="http://www.linuxhero.com/docs/type4.html">shell</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>5:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type5.html" tppabs="http://www.linuxhero.com/docs/type5.html">安装启动</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>6:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type6.html" tppabs="http://www.linuxhero.com/docs/type6.html">xwindow</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>7:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type7.html" tppabs="http://www.linuxhero.com/docs/type7.html">kde</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>8:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type8.html" tppabs="http://www.linuxhero.com/docs/type8.html">gnome</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>9:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type9.html" tppabs="http://www.linuxhero.com/docs/type9.html">输入法类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>10:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type10.html" tppabs="http://www.linuxhero.com/docs/type10.html">美化汉化</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>11:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type11.html" tppabs="http://www.linuxhero.com/docs/type11.html">网络配置</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>12:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type12.html" tppabs="http://www.linuxhero.com/docs/type12.html">存储备份</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>13:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type13.html" tppabs="http://www.linuxhero.com/docs/type13.html">杂项工具</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>14:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type14.html" tppabs="http://www.linuxhero.com/docs/type14.html">编程技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>15:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type15.html" tppabs="http://www.linuxhero.com/docs/type15.html">网络安全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>16:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type16.html" tppabs="http://www.linuxhero.com/docs/type16.html">内核技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>17:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type17.html" tppabs="http://www.linuxhero.com/docs/type17.html">速度优化</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>18:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type18.html" tppabs="http://www.linuxhero.com/docs/type18.html">apache</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>19:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type19.html" tppabs="http://www.linuxhero.com/docs/type19.html">email</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>20:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type20.html" tppabs="http://www.linuxhero.com/docs/type20.html">ftp服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>21:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type21.html" tppabs="http://www.linuxhero.com/docs/type21.html">cvs服务</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>22:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type22.html" tppabs="http://www.linuxhero.com/docs/type22.html">代理服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>23:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type23.html" tppabs="http://www.linuxhero.com/docs/type23.html">samba</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>24:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type24.html" tppabs="http://www.linuxhero.com/docs/type24.html">域名服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>25:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type25.html" tppabs="http://www.linuxhero.com/docs/type25.html">网络过滤</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>26:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type26.html" tppabs="http://www.linuxhero.com/docs/type26.html">其他服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>27:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type27.html" tppabs="http://www.linuxhero.com/docs/type27.html">nfs</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>28:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type28.html" tppabs="http://www.linuxhero.com/docs/type28.html">oracle</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>29:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type29.html" tppabs="http://www.linuxhero.com/docs/type29.html">dhcp</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>30:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type30.html" tppabs="http://www.linuxhero.com/docs/type30.html">mysql</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>31:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type31.html" tppabs="http://www.linuxhero.com/docs/type31.html">php</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>32:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type32.html" tppabs="http://www.linuxhero.com/docs/type32.html">ldap</a></font></td> </tr> </table></td></tr> </table>
</DIV></TD></TR>
<TR vAlign=top>
<TD width="80%">
<DIV align=center><BR>
</DIV>
</TD></TR></TBODY></TABLE></TD></TR>
</TABLE></TD></TR>
</TABLE>
<TABLE cellSpacing=0 cellPadding=4 width="100%" bgColor=#eeeeee
border=0><TBODY>
<TR>
<TD width="50%">
<P><FONT class=middlefont>版权所有 © 2004 <A
href="mailto:bjchenxu@sina.com">linux知识宝库</A><BR>
违者必究. </FONT></P>
</TD>
<TD width="50%">
<DIV align=right><FONT class=middlefont>Powered by: <A
href="mailto:bjchenxu@sina.com">Linux知识宝库</A> Version 0.9.0 </FONT></DIV>
</TD></TR></TBODY></TABLE>
<CENTER></CENTER></TD></TR>
</TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -