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

2024-06-15 02:38
文章标签 翻译 stream 接上 otl

本文主要是介绍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&));

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

 

 

这篇关于OTL翻译(5) -- otl_stream类(接上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062206

相关文章

文件权限修改为777,php failed to open stream: Permission denied

记录一次在谷歌云上的异常诡异的事件: 环境 centos7.5 nginx php7.0 mysql 问题: 问题一 我用相同的nginx配置,只是修改了nginx root目录。 打开/var/www/html/ 这个目录就报 2018/06/22 04:35:03 [error] 15840#0: *438 FastCGI sent in stderr: “Primary scr

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译 一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https://transmart.qq.com/ 软件

Creating custom and compound Views in Android - Tutorial(翻译)

Creating custom and compound Views in Android - Tutorial(翻译) 译前的: 之前做了三篇学习笔记,从知乎上面看到了这篇英文的推荐,总的来说可以是一篇导读,没有相关的学习,看这篇,可以作为一个学习脉络导向;有相关的学习底子,可以作为一个基础夯实、思维理清。没想到一翻译就是四个多小时…英语渣,很多词句都不太准确,幸好有之前的学习基础打底…

FFplay源码分析-stream_component_open

《FFmpeg原理》的社群来了,想加入社群的朋友请购买 VIP 版,VIP 版有更高级的内容与答疑服务。 本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 FFplay 源码分析系列以一条简单的命令开始,ffplay -i a.mp4。a.mp4下载链接:百度网盘,提取码:nl0s 。 上一篇文章已经讲解完了 stream_component_op

SRS4.0源码分析-SrsRtmpConn::stream_service_cycle

SRS 的社群来了,想加入微信社群的朋友请购买《SRS原理》电子书,里有更高级的内容与答疑服务。 本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 本文讲解 SrsRtmpConn::stream_service_cycle() 函数的实现原理。流程图如下: 上面的流程图中有几个重点: 重点1,这里插个题 在调 stream_service_cycle()

Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!

代码仓库 会同步代码到 GitHub https://github.com/turbo-duck/flink-demo 当前章节 继续上一节的内容:https://blog.csdn.net/w776341482/article/details/139875037 上一节中,我们需要使用 nc 或者 telnet 等工具来模拟 Socket 流。这节我们写一个 ServerSocket

Java8 Stream的各种使用姿势

Stream简介   Java 8 API添加了一个新的抽象称为流(Stream),它可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。 概括来说:Stream的出生就是为了代码好看、为了性能高 如何Debug   在IDEA的Debug窗口找到Trace Current Stream Ch

redis翻译2

分区:如何在多个Redis实例之间分割数据。 分区是将您的数据分割为多个Redis实例的过程,因此每个实例只包含您的密钥的一个子集。本文档的第一部分将向您介绍分区的概念,第二部分将向您展示Redis分区的备选方案。 为什么分区很有用 在Redis中进行分区有两个主要目标: 它允许更大的数据库,使用许多计算机的内存总和。如果不进行分区,您仅限于单台计算机可支持的内存量。它允许将计算能力扩

redis翻译1

文档 注意:Redis文档也可以在redis-doc github存储库中以原始(计算机友好)格式提供。Redis文档根据知识共享署名 - 相同方式共享4.0国际许可协议发布。 用Redis编程 Redis实施的完整命令列表以及每个命令的详细文档。流水线:了解如何一次发送多个命令,节省往返时间。Redis Pub / Sub:Redis是一个快速而稳定的Publish / Subscri

Node.js 核心技术 Stream (第二版)【讲师辅导】-曾亮-专题视频课程

Node.js 核心技术 Stream (第二版)【讲师辅导】—6549人已学习 课程介绍         本课程是 Node.js 核心技术系列课程之一,课程讲解了 stream 流的原理、实现和调用方式,要想对 Node.js 技术有深层次的掌握,就必须对 stream 精通,因为它是数据的血脉! 一切和 I/O 和数据相关的 API 都会用到 stream ,但只是局限在表面