OTL翻译(5) -- otl_stream类(接上)

33

otl_stream & operator>>(otl_long_unicode_string & s)

在定义了OTL_UNICODE或OTL_UNICODE_CHAR_TYPE宏情况下,返回UNICODE的LOB类型

34

otl_stream & operator>>(OTL_UNICODE_CHAR_TYPE&c)

在定义了OTL_UNICODE或OTL_UNICODE_CHAR_TYPE宏情况下,返回UNICODE的字符类型

35

otl_stream operator>>(OTL_UNICODE_CHAR_TYPE * s)

在定义了OTL_UNICODE或OTL_UNICODE_CHAR_TYPE宏情况下,返回UNICODE的字符串

36

otl_stream & operator>>(OTL_UNICODE_STRING_TYPE & s)

在定义了OTL_UNICODE或OTL_UNICODE_CHAR_TYPE/OTL_UNICODE_STRING_TYPE宏情况下,返回UNICODE的string类型,能够很好的读取大数据字段类型,如TEXT类型等。

37

otl_stream & operator>>(char & c)

返回单字节的字符

38

otl_stream & operator>>(undigned char & c)

返回单字节的无符号字符

39

otl_stream & operator>>(char * s)

返回单字节的字符串类型

40

otl_stream& operator>>(unsigned char* s);

返回无符号的单字节字符串类型

41

otl_stream& operator>>(otl_long_string& s);

返回LOB类型

42

otl_stream& operator>>(std::string& s);

必须定义OTL_STL宏。

读取流中的string类型

43

otl_stream& operator>>(ACE_TString& s);  

必须定义OTL_ACE

读取流中的ACE_TString类型。

44

otl_stream& operator>>(USER_DEFINED_STRING_CLASS & s); 

必须定义USER_DEFINE_STRING_CLASS和OTL_USER_DEFINED_CLASS_ON宏。

读取用户自定义的与string类型兼容的类型。

45

otl_stream& operator>>(int& n); 

读取32位有符号整型

46

otl_stream& operator>>(unsigned& u);

读取32位无符号整武师

47

otl_stream& operator>>(short& sh);  

读取16位短整型

48

otl_stream& operator>>(long int& l);

读取长整型(具体长度由编译器决定)

49

otl_stream& operator>>(float& f);   

读取4字节长度的浮点型

50

otl_stream& operator>>(double& d);  

读取8字节长度的浮点型

51

otl_stream& operator>>(OTL_BIGINT& d);   

在定义了OTL_BIGINT的情况下。对于不支持bigint的ODBC来说,该操作能将一个数字串转换为64位的有符号整型。

必须定义OTL_STRING_TO_BIGINT/OTL_BIGINT_TO_STRING

52

otl_stream& operator>>(otl_datetime& dt);

读取流中的时间信息

53

otl_stream& operator>>(otl_XXX_tab<…>& tab); 

通过OCI来读取SQL语句中的表信息

54

otl_stream& operator>>(otl_lob_stream& lob);

把CLOB/BLOB/TEXT/IMAGE类型读取到otl_lob_stream类型里面

55

otl_stream& operator>>(otl_refcur_stream& refcur);

把游标的信息读取到otl_refcur_stream类型里面。

56

otl_stream& operator<<(const unsigned char* s);

往流中写入信息。

往流中写入一个以NULL结尾的字符串。如果定义了OTL_UNICODE,则是双字节字符串。

57

otl_stream& operator<<(otl_long_unicode_string& s);

往流中写入UNICODE LOB类型

58

otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE& c);

在定义了OTL_UNICODE_CHAR_TYPE宏的情况下,往流中写入一个UNICODE字符

59

otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE* s);

往流中写入一个UNICODE字符串

60

otl_stream& operator>>(const OTL_UNICODE_STRING_TYPE& s);

在定义了OTL_UNICODE/OTL_UNICODE_CHAR_TYPE/OTL_UNICODE_STRING_TYPE宏的情况下,把一个字符串写入到流中。(可以是大对象)

61

otl_stream& operator<<(const char c);

往流中写入一个字符

62

otl_stream& operator<<(const unsigned char c);

往流中写入一个无符号的字符

63

otl_stream& operator<<(const char* s);   

往流中写入一个以NULL结尾的字符串

64

otl_stream& operator<<(const unsigned char* s);

往流中写入一个以NULL结尾的无符号的字符串

65

otl_stream& operator<<(const otl_long_string& d);

往流中写入LOB类型对象

66

otl_stream& operator<<(const std::string& s);

在定义了OTL_STL宏的情况下,往流里面写入一个STL的string类型。

67

otl_stream& operator<<(const ACE_TString &s);

在这、定义了OTL_ACE宏的情况下,往流中写入一个ACE_TString类型。

68

otl_stream& operator<<(const USER_DEFINED_STRING_CLASS &s);

在定义了USER_DEFINED_STRING_CLASS和OTL_USER_DEFINED_CLASS_ON宏的情况下,往流中写入一个用户自定义的字符串类型

69

otl_stream& operator<<(const int n);

往流中写入一个有符号的整型

70

otl_stream& operator<<(const unsigned u);

往流中写入一个无符号的整型

71

otl_stream& operator<<(const short sh);  

往流中写入一个短整型

72

otl_stream& operator<<(const long int l);

往流中写入一个长整型

73

otl_stream& operator<<(const float f);   

往流中写入4字节长度的浮点型

74

otl_stream& operator<<(const double d);  

往流中写入8字节长度的浮点型

75

otl_stream& operator<<(const OTL_BIGINT d);

在定义了OTL_BIGINT的情况下。对于不支持bigint的ODBC来说,该操作能将一个数字串转换为64位的有符号整型。

必须定义OTL_STRING_TO_BIGINT/OTL_BIGINT_TO_STRING

76

otl_stream& operator<<(const otl_null &n);    

往流中写入NULL值。

OTL定义了一个匿名的NULL类,如下:

class otl_null

{

public:

otl_null();

~otl_null();

};

77

otl_stream& operator<<(const otl_datetime& dt);

往流中写入日期/时间类型。OTL定义了自已的一个otl_datetime类,如下:

序号

成员变量

说明

1

int year

2

int month

3

int day

4

int hour

小时

5

int minute

分钟

6

int second

7

unsigned long fraction

微秒部分,默认为0

8

int frac_precision

秒的精度部分,默认为0

9

short int tz_hour

定义了OTL_ORA_TIMESTAMP或OTL_ODBC_TIME_ZONE宏情况下的时区小时

10

short int tz_minute

定义了OTL_ORA_TIMESTAMP或OTL_ODBC_TIME_ZONE宏情况下的时区分钟

fraction/frac_precision两个成员是由数据库决定的。具体数据库支持的精度不一样,该两个成员变量值也不一样。

78

otl_stream& operator<<(const otl_XXX_tab<…>& tab);

往流中写入SQL的表信息

79

otl_stream& operator<<(otl_lob_stream& lob);

往流中写入otl_lob_stream对象

80

void set_all_column_types

(const unsigned int amask=0);

设置一组输出字段的类型。可以有如下设置:

otl_all_num2str

otl_all_date2str

otl_all_num2str | otl_all_date2str

81

void set_column_type

       (const int column_ndx,

        const int col_type,

        const int col_size=0);

设置输出字段的类型。

column_ndx索引为输出字段的相对位置,如1、2、3.

col_type是由OTL定义的一组类型。

col_size是指用来存放新的类型的长度,该长度只对otl_var_char类型有效,对于数值类型能自动计算得出。

该函数能被简单的SELECT语句、带游标的SELECT语句和返回结果集的SELECT语句调用。

该函数里面的类型组合如下:

序号

数据库数据类型

OTL默认对应类型

OTL兼容的类型

1

NUMBER(ORACLE)

otl_var_double

otl_var_char, otl_var_int, otl_var_float, otl_var_short, otl_var_unsigned_int

2

NUMBER,FLOAT,REAL,MONEY,DECIMAL(MS SQL SERVER/SYBASE/DB2)

otl_var_double

otl_var_char, otl_var_int, otl_var_float, otl_var_short, otl_var_unsigned_int, otl_var_long_int

3

INT(MS SQL SERVER/SYBASE/DB2)

otl_var_int

otl_var_char, otl_var_double, otl_var_float, otl_var_short, otl_var_unsigned_int, otl_var_long_int

4

SMALLINT,TINYINT(MS SQL SERVER/SYBASE/DB2)

otl_var_short

otl_var_char, otl_var_int, otl_var_float, otl_var_double, otl_var_unsigned_int, otl_var_long_int

5

DATE(ORACLE),DATETIME(MS SQL SERVER/SYBASE)

otl_timestamp

otl_var_char

6

LONG ( ORACLE)

otl_var_varchar_long

otl_var_char (<=32000 bytes)

7

TEXT(MS SQL SERVER/SYBASE)

otl_var_varchar_long

otl_var_char(<= max. size of varchar, e.g. <=8000 in MS SQL)       

该函数强烈要求限制使用,只有在那些确实因为数值容纳不下的情况下,才允许使用otl_var_char进行转换

82

int get_dirty_buf_len();   

返回流的缓冲区里面脏数据的行数。所谓的脏数据,指的是对于缓冲区大于1的时候,当执行SQL语句的时候,缓冲区未被填满的情况下,已经使用了的缓冲区条数。如缓冲区为100条记录,在执行某SELECT语句后,取出30条数据,那么缓冲区此时不会被刷新,缓冲区里面有30条数据,执行此函数后就返回30.

如果缓冲区长度被设置为1后,该函数总是返回0.因为如果缓冲区为1后,每次取出记录都会填满缓冲区,此时缓冲区被填满后就会自动刷新,所以缓冲区里面未被刷新的数据总是0条。所以总是返回0.

该函数同样可以返回SELECT语句的游标或结果集缓冲区里面的脏数据。

对于其它的(非SELECT/UPDATE/DELETE/UPDATE)SQL语句块或存储过程,该函数未定义。

83

int get_prefetched_row_count(); 

返回SELEC语句、有结果集的存储过程或ORACLE的游标的累计的结果行数。而对于其他的存储过程则总是返回0.

如:对于某SELECT语句,第一次执行返回50,第二次执行返回50,第三次执行结果返回23,那么执行该函数时候,依次返回的的结果是50、100、123.

84

void skip_to_end_of_row(); 

把读取流的指针定位到当前行的末尾。以便下次读取流的时候,又从逻辑行的第一列开始读取。

85

void check_end_of_row();

检测是否到达行的末尾。如果没有到达行的末尾,该函数抛出END_OF_ROW check failed异常。

86

otl_stream&

operator>>(otl_stream& (*pf) (otl_stream&));

该函数调用(*pf)流函数(check_end_of_row())。常用法如下:

s>>f1>>f2>>endr;

87

otl_stream& operator<<(otl_stream& (*pf) (otl_stream&));

同上,把输出定义为输入。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值