返回首页

gbase数据、南大通用产品文档:GBase8sifx_dececvt() 和 ifx_decfcvt() 函数

更新日期:2024年09月11日

ifx_dececvt() 和 ifx_decfcvt() 函数是 dececvt() 和 decfcvt()GBase 8s ESQL/C 库函数
的线程安全版本。
语法
mint ifx_dececvt(np, ndigit, decpt, sign, decstr, decstrlen)
register dec_t *np;
register mint ndigit;
mint *decpt;
mint *sign;
char *decstr;
mint decstrlen;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 701 -

mint ifx_decfcvt(np, ndigit, decpt, sign, decstr, decstrlen)
register dec_t *np;
register mint ndigit;
mint *decpt;
mint *sign;
char *decstr;
mint decstrlen;
np
指向包含要被转换的 decimal 值的 decimal 结构的指针。
ndigit
ifx_dececvt() 的 ASCII 字符串的长度。它是 ifx_decfcvt() 的小数点的右边的位数。
decpt
指向整数的指针,该整数是小数点相对于该字符串的开头的位置。*decpt 的负值或零
值意味着该位置位于返回的数字的左边。
sign
指向结果的符号的指针。如果该结果的符号为负的,则 *sign 非零;否则,它为零。

decstr
函数将转换了的 decimal 值返回到其中的用户定义的缓冲区。
decstrlen
用户定义的 decstr 缓冲区的长度,以字节计。

用法
ifx_dececvt() 函数是 dececvt() 函数的线程安全版本。ifx_decfcvt() 函数是 decfcvt()
函数的线程安全版本。当两个线程同时调用该函数时,每一函数返回一个不可被重写的字
符串。

返回代码
0
转换成功。
<0
转换不成功。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 702 -
-1273
输出缓冲区为空,或太小以至于不能保存结果。

不以 ifx_lo 函数来访问智能大对象,您可通过使用标准 ODBC API 来访问智能大对象。
当以标准 ODBC API 来访问智能大对象时,支持的操作包括 CLOB 和 BLOB 数据类型
的选择、插入、更新和删除。不可以这种方式来访问 BYTE 和 TEXT 简单大对象。
使用 SQL_INFX_ATTR_LO_AUTOMATIC 来设置访问方法
可使用 SQL_INFX_ATTR_LO_AUTOMATIC 属性来告诉数据库服务器,是通过使用
ODBC API 还是通过使用 ifx_lo 函数,来访问智能大对象。
如果应用程序启用 SQL_INFX_ATTR_LO_AUTOMATIC 作为连接属性,则该连接的所有
语句都继承该属性值。要更改每个语句的此属性值,您必须设置并重置它作为语句属性。
如果为该语句启用此属性,
则应用程序可通过使用如前所述的标准 ODBC 的方式来访问智
能大对象。如果未为该语句启用此属性,则应用程序通过使用 ifx_lo 函数来访问智能大对
象。如果为该语句启用此属性,则应用程序不可使用 ifx_lo 函数。
对于 GBase 8s Driver DSN,
还可通过开启 ODBC Administration 的 Advanced 标签之下的
报告标准 ODBC 类型选项,来启用 SQL_INFX_ATTR_LO_AUTOMATIC 属性。
CLOB 数据类型列的 SQLDescribeCol 返回 DataPtrType 的 SQL_LONGVARCHAR。
如果
为该语句启用 SQL_INFX_ATTR_LO_AUTOMATIC 属性,则 BLOB 类型列的
SQLDescribeCol 返回 SQL_LONGVARBINARY。
CLOB 类型列的 SQLColAttributes 为 SQL_DESC_TYPE 的 Field Identifier 返回
SQL_LONGVARCHAR,而对于 BLOB 数据类型列,仅当为该语句启用
SQL_INFX_ATTR_LO_AUTOMATIC 属性时,它才返回 SQL_LONGVARBINARY。

通过使用 ODBC API,来插入、更新和删除智能大对象
当您插入、更新和删除 CLOB 或 BLOB 数据类型时,应用程序通过使用
SQLBindParameter 来将该数据类型与一 C 类型绑定。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 106 -
当您插入、
更新和删除 CLOB 数据类型时,
应用程序通过使用 SQLBindParameter (C 类
型为 SQL_C_CHAR,SQL 类型为 SQL_LONGVARCHAR)来将绑定 CLOB 数据类型。

当您插入、
更新和删除 BLOB 数据类型时,
应用程序通过使用 SQLBindParameter (C 类
型为 SQL_C_BINARY,SQL 类型为 SQL_LONGVARBINARY)来绑定 BLOB 数据类
型。
GBase 8s ODBC Driver 以下列方式来执行智能大对象的插入:

驱动程序发送请求至数据库服务器,来以新文件的形式在服务器端创建智能大对象。


驱动程序从数据库服务器取回此文件的文件描述符(例如,lofd)。

驱动程序将上述 lofd 文件和由应用程序以 SQLBindParameter 绑定了的智能大对
象数据发送至数据库服务器。

数据库服务器将数据写入文件。

使用 ODBC API 来选择智能大对象
当选择 CLOB 数据类型时,应用程序绑定该列的 C 类型作为 SQL_C_CHAR。当选择
BLOB 数据类型时,绑定该 C 类型作为 SQL_C_BINARY。
GBase 8s ODBC Driver 以下列方式来选择智能大对象:

驱动程序发送请求至数据库服务器,来打开智能大对象作为服务器端的文件。

驱动程序从数据库服务器取回此文件的文件描述符(例如,lofd)。

驱动程序将上述 lofd 和读请求发送至数据库服务器,
来从该文件读取智能大对象。


数据库服务器通过使用上述 lofd 来从对应的文件读取数据,并将它发送至驱动程
序。

驱动程序将该数据写入到应用程序使用 SQLBindParameter 绑定的缓冲区。

DECLARE
x VARCHAR2(4) := 'suit';
y VARCHAR2(4) := 'case';
BEGIN
DBMS_OUTPUT.PUT_LINE (x || y);
END;

--Result:
--suitcase
有NULL运算的连接运算,连接操作符忽略了空操作数,如本例所示:
BEGIN
DBMS_OUTPUT.PUT_LINE ('apple' || NULL || NULL || 'sauce');
END;

--Result:
--Applesauce