云服务器内容精选

  • 接口介绍 高级功能包DBE_MATCH支持的所有接口请参见表1。 表1 DBE_MATCH 接口名称 描述 DBE_MATCH.EDIT_DISTANCE_SIMILARITY 比较两个字符串的差距(删除、新增、变换的最小步骤),并归一化到0-100(100表示完全一致,0表示完全不一致)。 DBE_MATCH.EDIT_DISTANCE_SIMILARITY 比较两个字符串的差距(删除、新增、变换的最小步骤),并归一化到0-100(100表示完全一致,0表示完全不一致),DBE_MATCH.EDIT_DISTANCE_SIMILARITY函数原型为: 1 2 3 4 DBE_MATCH.EDIT_DISTANCE_SIMILARITY( str1 IN text, str2 IN text )returns integer ; 表2 DBE_MATCH.EDIT_DISTANCE_SIMILARITY接口参数说明 参数 描述 str1 第一个字符串,如果为null,直接输出0。 str2 第二个字符串,如果为null,直接输出0。
  • 接口介绍 高级功能包DBE_XMLDOM用于访问XMLType对象,实现DOM(Document Object Model),一个用于访问HTML和XML DOCUMENTS API。高级功能包DBE_XMLDOM支持的所有类型请参见 表1,DBE_XMLDOM支持的所有接口请参见 表2。 当在数据库的字符集设置为SQL_ASCII的情况下使用DBE_XMLDOM高级包,传入超出ASCII范围的字符时,会产生报错信息。 表1 DBE_XMLDOM数据类型说明 类型名称 描述 DOMATTR 实现DOM Attribute接口。 DOMDOCUMENT 实现DOM Document接口。 DOMELEMENT 实现DOM Element接口。 DOMNAMEDNODEMAP 实现DOM Named Node Map接口。 DOMNODELIST 实现DOM Node List接口。 DOMNODE 实现DOM Node接口。 DOMTEXT 实现DOM Text接口。 表2 DBE_XMLDOM接口参数说明 接口名称 描述 DBE_XMLDOM.APPENDCHILD 将newchild node添加到parent(n)节点最后面,并返回新添加的Node节点。 DBE_XMLDOM.CREATEELEMENT 创建指定名称的DOMELEMENT对象。 DBE_XMLDOM.CREATETEXTNODE 创建DOMTEXT节点。 DBE_XMLDOM.FREEDOCUMENT 释放DOMDOCUMENT节点相关资源。 DBE_XMLDOM.FREEELEMENT 释放DOMELEMENT节点相关资源。 DBE_XMLDOM.FREENODE 释放DOMNODE节点相关资源。 DBE_XMLDOM.FREENODELIST 释放DOMNODELIST节点相关资源。 DBE_XMLDOM.GETATTRIBUTE 按名称返回DOMELEMENT属性的值。 DBE_XMLDOM.GETATTRIBUTES 将DOMNODE节点属性值作为map返回。 DBE_XMLDOM.GETCHILDNODES 将节点下的若干子节点转换成节点列表。 DBE_XMLDOM.GETCHILDRENBYTAGNAME 按名称返回DOMELEMENT的子节点。 DBE_XMLDOM.GETDOCUMENTELEMENT 返回指定DOCUMENT的首个子节点。 DBE_XMLDOM.GETFIRSTCHILD 返回第一个子节点。 DBE_XMLDOM.GETLASTCHILD 返回最后一个子节点。 DBE_XMLDOM.GETLENGTH 获取给定节点中的节点个数。 DBE_XMLDOM.GETLOCALNAME 检索节点的本地名称。 DBE_XMLDOM.GETNAMEDITEM 检索由名称指定的节点。 DBE_XMLDOM.GETNEXTSIBLING 返回该节点的下一个节点。 DBE_XMLDOM.GETNODENAME 返回节点名称。 DBE_XMLDOM.GETNODETYPE 返回节点类型。 DBE_XMLDOM.GETNODEVALUE 此函数用于获取节点的值,具体取决于其类型。 DBE_XMLDOM.GETPARENTNODE 检索此节点的父节点。 DBE_XMLDOM.GETTAGNAME 返回指定DOMELEMENT的标签名称。 DBE_XMLDOM.HASCHILDNODES 检查DOMNODE对象是否拥有任一子节点。 DBE_XMLDOM.IMPORTNODE 复制节点并为该节点指定所属文档。 DBE_XMLDOM.ISNULL 检测节点是否为空。 DBE_XMLDOM.ITEM 返回映射中与索引参数对应的项。 DBE_XMLDOM.MAKEELEMENT 将DOMNODE对象转换为DOMELEMENT类型。 DBE_XMLDOM.MAKENODE 将节点强制转换为DOMNODE类型。 DBE_XMLDOM.NEWDOMDOCUMENT 返回新的DOMDOCUMENT对象。 DBE_XMLDOM.SETATTRIBUTE 按名称设置DOMELEMENT属性的值。 DBE_XMLDOM.SETCHARSET 设置DOMDOCUMENT的CHATSET字符集。 DBE_XMLDOM.SETDOCTYPE 设置DOMDOCUMENT的外部DTD。 DBE_XMLDOM.SETNODEVALUE 此函数用于向DOMNODE对象中设置节点的值。 DBE_XMLDOM.WRITETOBUFFER 将 XML 节点写入指定缓冲区。 DBE_XMLDOM.WRITETOCLOB 将 XML 节点写入指定CLOB。 DBE_XMLDOM.WRITETOFILE 将 XML 节点写入指定文件。 DBE_XMLDOM.GETSESSIONTREENUM 显示当前session中所有类型的dom树的数量。 DBE_XMLDOM.GETDOCTREESINFO 显示document类型的dom树的内存占用、节点数量等统计信息。 DBE_XMLDOM.GETDETAILDOCTREEINFO 显示特定的document变量的各类型节点数量。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 CREATE OR REPLACE PROCEDURE test_get_time1() AS declare start_time bigint; end_time bigint; BEGIN start_time:= dbe_utility.get_time (); pg_sleep(1); end_time:=dbe_utility.get_time (); dbe_output.print_line(end_time - start_time); END; / CREATE PROCEDURE -- 给表名字符串做规范 declare cname varchar2(50); begin dbe_utility.canonicalize('seg1', cname, 50); dbe_output.put_line(cname); end; / -- 预期结果为: SEG1 ANONYMOUS BLOCK EXECUTE -- 将输入的字符串转换成一个表名的数组 DECLARE tab_list VARCHAR2(100) := 't1,t2'; len BINARY_INTEGER; tab varchar2[]; BEGIN dbe_output.put_line('table list is :' || tab_list); dbe_utility.comma_to_table(tab_list, len, tab); END; / -- 预期结果为: table list is: t1,t2 ANONYMOUS BLOCK EXECUTE -- 查看数据库的版本号和兼容性版本号 declare v_version varchar2; begin dbe_utility.db_version(v_version); v_version:=left(v_version, 8); dbe_output.print_line('version:' || v_version); end; / -- 预期结果为: version:gaussdb ANONYMOUS BLOCK EXECUTE -- 查看当前CPU处理时间的测量值 DECLARE cputime NUMBER; BEGIN cputime := dbe_utility.get_cpu_time; dbe_output.put_line('cpu time:' || cputime); END; / -- 预期结果为(数值并非固定): cpu time:9851 ANONYMOUS BLOCK EXECUTE -- 获取数据库所在平台字节序的大小端信息 BEGIN dbe_output.PUT_LINE(dbe_utility.GET_ENDIANNESS); END; / -- 预期结果为: 2 ANONYMOUS BLOCK EXECUTE -- 获取一个给定字符串的hash值 DECLARE result NUMBER(28); BEGIN result := dbe_utility.get_hash_value('hello',10,10); dbe_output.put_line(result); END; / -- 预期结果为: 11 ANONYMOUS BLOCK EXECUTE -- 判断当前数据库是否为集群模式 DECLARE is_cluster BOOLEAN; BEGIN is_cluster := dbe_utility.IS_CLUSTER_DATABASE; dbe_output.put_line('CLUSTER DATABASE: ' || CASE WHEN is_cluster THEN 'TRUE' ELSE 'FALSE' END); END; / -- 预期结果为: CLUSTER DATABASE: FALSE ANONYMOUS BLOCK EXECUTE -- 获取当前用户环境下的数据库模式名称 DECLARE schm varchar2(100); BEGIN schm := dbe_utility.old_current_schema; dbe_output.put_line('current schema: ' || schm); END; / -- 预期结果为(结果为当前数据库的模式名,并非固定): current schema: public ANONYMOUS BLOCK EXECUTE -- 获取当前用户名称 select dbe_utility.old_current_user from sys_dummy; -- 预期结果为(结果为当前数据库的用户名,并非固定): old_current_user ------------------ admin (1 row)
  • 接口介绍 高级功能包DBE_UTILITY支持的所有接口请参见表1。 表1 DBE_UTILITY 接口名称 描述 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 输出存储过程异常的调用堆栈。 DBE_UTILITY.FORMAT_ERROR_STACK 输出存储过程异常的具体信息。 DBE_UTILITY.FORMAT_CALL_STACK 输出存储过程的调用堆栈。 DBE_UTILITY.GET_TIME 输出当前时间,一般用于做差得到执行时长。 DBE_UTILITY.CANONICALIZE 用于给表名字符串做规范。 DBE_UTILITY.COMMA_TO_TABLE 将用逗号隔开的名字列表的字符串转换为PL/SQL表名列表。 DBE_UTILITY.DB_VERSION 返回数据库的版本号和兼容性版本号。 DBE_UTILITY.EXEC_DDL_STATEMENT 用于执行用户输入的DDL语句。 DBE_UTILITY.EXPAND_SQL_TEXT_PROC 用于展开SQL查询的视图。 DBE_UTILITY.GET_CPU_TIME 返回当前CPU处理时间的测量值。 DBE_UTILITY.GET_ENDIANNESS 用于获取数据库所在平台字节序的大小端信息。 DBE_UTILITY.GET_HASH_VALUE 返回一个给定字符串的hash值。 DBE_UTILITY.GET_SQL_HASH 输出一个给定字符串的hash值,该存储过程在不打开proc_outparam_override时使用。 DBE_UTILITY.IS_BIT_SET 用于检查参数n是否存在于r。 DBE_UTILITY.IS_CLUSTER_DATABASE 用于判断当前数据库是否在数据库集群模式下运行。 DBE_UTILITY.NAME_RESOLVE 解析给定的对象名称,包括同义词翻译和必要的授权检查。 DBE_UTILITY.NAME_TOKENIZE 用于解析a [. b [. c ]][@ dblink ]形式的名字。 DBE_UTILITY.OLD_CURRENT_SCHEMA 返回当前用户环境下的数据库模式名称。 DBE_UTILITY.OLD_CURRENT_USER 返回当前用户的名称。 DBE_UTILITY.TABLE_TO_COMMA 将PL/SQL中的表名转换为用逗号隔开的名字列表的字符串。 DBE_UTILITY.GET_SQL_HASH_FUNC 功能同DBE_UTILITY.GET_SQL_HASH,该函数在打开proc_outparam_override时使用。 DBE_UTILITY.EXPAND_SQL_TEXT 内部函数,不建议用户使用。 DBE_UTILITY.CANONICALIZE_RET 内部函数,不建议用户使用。 DBE_UTILITY.COMMA_TO_TABLE_FUN 内部函数,不建议用户使用。 DBE_UTILITY.COMPILE_SCHEMA 内部函数,不建议用户使用,推荐使用pkg_util.gs_compile_schema。 DBE_UTILITY.NAME_SEPARATE 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.PRIVILEGE_CHECK 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_CLASS_WITH_NSPOID_ONAME_TYPE 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJE CTS 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJECTS_SYNONYM_FILL_SECHEMA 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_PROCEDURE_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_SYNONM_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.TABLE_TO_COMMA_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.USER_NAME 内部函数,不建议用户使用。 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 存储过程FORMAT_ERROR_BACKTRACE返回在执行过程中出现错误时,出现错误位置的调用堆栈。DBE_UTILITY.FORMAT_ERROR_BACKTRACE函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_BACKTRACE() RETURN TEXT; DBE_UTILITY.FORMAT_ERROR_STACK 存储过程FORMAT_ERROR_STACK返回在执行过程中出现错误时,出现错误位置的具体信息。DBE_UTILITY.FORMAT_ERROR_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_STACK() RETURN TEXT; DBE_UTILITY.FORMAT_CALL_STACK 存储过程FORMAT_CALL_STACK设置输出函数调用堆栈。DBE_UTILITY.FORMAT_CALL_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_CALL_STACK() RETURN TEXT; DBE_UTILITY.COMPILE_SCHEMA 重编译指定schema下的PL/SQL类型包和函数(系统自带的包和函数除外), DBE_UTILITY.COMPILE_SCHEMA函数原型为: DBE_UTILITY.COMPILE_SCHEMA ( SCHEMA IN VARCHAR2, COMPILE_ALL IN BOOLEAN DEFAULT TRUE, REUSE_SETTINGS IN BOOLEAN DEFAULT FALSE ) RETURNS VOID; 示例参考11.12.1.2中pkg_util.utility_compile_schema函数使用方式, 调用处改为: call DBE_UTILITY.compile_schema('pkg_var_test'); DBE_UTILITY.GET_TIME 存储过程GET_TIME设置输出时间,通常用于做差,单独的返回值没有意义。DBE_UTILITY.GET_TIME函数原型为: 1 2 DBE_UTILITY.GET_TIME() RETURN BIGINT;
  • 接口介绍 高级功能包DBE_SESSION支持的所有接口请参见表1。DBE_SESSION作用范围是会话级别。 表1 DBE_SESSION 接口名称 描述 DBE_SESSION.SET_CONTEXT 设置指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.CLEAR_CONTEXT 清除指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.SEARCH_CONTEXT 查找指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.SET_CONTEXT 向指定namespace(context)下,设置某一属性(attribute)的值(value)。DBE_SESSION.SET_CONTEXT函数原型为: 1 2 3 4 5 DBE_SESSION.SET_CONTEXT( namespace text, attribute text, value text )returns void; 表2 DBE_SESSION.SET_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 需要设置的context名称,当context不存在时,新建context,最长支持128个字节,超长时将会截断。 attribute TEXT IN 否 属性名称,最长支持1024个字节,超长时将会截断。 value TEXT IN 否 要设置的值的名称,最长支持1024个字节,超长时将会截断。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 DECLARE a text; BEGIN DBE_SESSION.set_context('test', 'gaussdb', 'one'); --设置名为test的context下属性为gaussdb的值为one a := DBE_SESSION.search_context('test', 'gaussdb'); DBE_OUTPUT.PRINT_LINE(a); DBE_SESSION.clear_context('test', 'test','gaussdb'); END; / -- 预期结果为: one ANONYMOUS BLOCK EXECUTE
  • 接口介绍 高级功能包DBE_RANDOM支持的所有接口请参见表 DBE_RANDOM接口参数说明。 表1 DBE_RANDOM接口参数说明 接口名称 描述 DBE_RANDOM.SET_SEED 设置一个随机数的种子。 DBE_RANDOM.GET_VALUE 生成一个大小介于指定的low及high之间的随机数。 DBE_RANDOM.SET_SEED 存储过程SEED用于设置一个随机数的种子。DBE_RANDOM.SET_SEED函数原型为: 1 DBE_RANDOM.SET_SEED (seed IN INTEGER); 表2 DBE_RANDOM.SET_SEED接口参数说明 参数 描述 seed 用于产生一个随机数的种子。 DBE_RANDOM.GET_VALUE 函数GET_VALUE生成一个大小介于指定的low及high之间的随机数。DBE_RANDOM.GET_VALUE函数原型为: 1 2 3 4 DBE_RANDOM.GET_VALUE( min IN NUMBER default 0, max IN NUMBER default 1) RETURN NUMBER; 表3 DBE_RANDOM.GET_VALUE接口参数说明 参数 描述 min 指定随机数大小的下边界,生成的随机数大于或等于min。 max 指定随机数大小的上边界,生成的随机数小于max。 实际上,只要求这里的参数类型是NUMERIC即可,对于左右边界的大小并没有要求。 DBE_RANDOM实现的是伪随机,所以若使用的初值(种子)不变,那么伪随机数的数序也不变,使用时需要注意。 生成的随机数有效数字为15位。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 --产生0到1之间的随机数: SELECT DBE_RANDOM.GET_VALUE(0,1); get_value ------------------ .917468812743886 (1 row) --对于指定范围内的整数,要加入参数min和max,并从结果中截取较小的数(最大值不能被作为可能的值)。所以对于0到99之间的整数,使用下面的代码: SELECT TRUNC(DBE_RANDOM.GET_VALUE(0,100)); trunc ------- 26 (1 row)
  • 接口介绍 高级功能包DBE_FILE支持的所有接口请参见表2。 表2 DBE_FILE 接口名称 描述 DBE_FILE.OPEN/DBE_FILE.F... 根据指定的目录和文件名打开一个文件,返回对应的文件句柄或者封装了文件句柄的DBE_FILE.FILE_TYPE类型对象。 DBE_FILE.IS_CLOSE 检测一个文件句柄是否关闭。 DBE_FILE.IS_OPEN 检测一个文件句柄是否打开。 DBE_FILE.READ_LINE 从一个打开的文件句柄中读取一行指定长度的数据。 DBE_FILE.WRITE 将数据写入到一个打开的文件的缓冲区中。 DBE_FILE.NEW_LINE 将一个或者多个行终结符写入到一个打开的文件的缓冲区中。 DBE_FILE.WRITE_LINE 将数据写入到一个打开的文件的缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE 将数据按指定格式写入到一个打开的文件的缓冲区中。 DBE_FILE.GET_RAW 从一个打开的文件中读取指定字节数的RAW类型数据。 DBE_FILE.PUT_RAW 将RAW类型数据写入到一个打开的文件的缓冲区中。 DBE_FILE.FLUSH 将缓存区中的数据写入到物理文件中。 DBE_FILE.CLOSE 关闭一个打开的文件句柄。 DBE_FILE.CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 DBE_FILE.REMOVE 根据指定的目录和文件名删除一个磁盘文件,操作的时候需要有充分的权限。 DBE_FILE.RENAME 重命名一个磁盘文件,类似Unix的mv指令。 DBE_FILE.COPY 复制一个连续区域的内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.GET_ATTR 读取并返回一个磁盘文件的属性。 DBE_FILE.SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.GET_POS 以字节为单位返回文件当前的偏移量。 DBE_FILE.FOPEN_NCHAR 以NCHAR模式根据指定的目录和文件名打开一个文件。 DBE_FILE.WRITE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中。 DBE_FILE.WRITE_LINE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE_NCHAR 将NVARCHAR2类型的数据按指定格式写入到一个打开的NCHAR模式文件缓冲区中。 DBE_FILE.READ_LINE_NCHAR 从一个打开的NCHAR模式文件中读取一行指定长度的数据。 DBE_FILE.OPEN/DBE_FILE.FOPEN 函数DBE_FILE.OPEN用来打开一个文件,可以指定文件每行的最大字节数,一个会话内最多可以同时打开50个文件。该函数返回一个INTEGER类型的文件句柄。函数DBE_FILE.FOPEN功能和DBE_FILE.OPEN类似,返回一个DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.OPEN和DBE_FILE.FOPEN函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 DBE_FILE.OPEN( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN INTEGER; DBE_FILE.FOPEN( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表3 DBE_FILE.OPEN/DBE_FILE.FOPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode TEXT IN 否 指定文件的打开模式,包含r:read text,w: write text, a: append text, rb: read byte, wb: write byte和ab: append byte。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size INTEGER IN 是 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 DBE_FILE.IS_CLOSE 函数DBE_FILE.IS_CLOSE用于检测一个文件句柄是否已经关闭,返回布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_CLOSE( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表4 DBE_FILE.IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_CLOSE接口返回空。 DBE_FILE.IS_OPEN 函数DBE_FILE.IS_OPEN用于检测一个文件是否已经打开,返回一个布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_OPEN函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_OPEN( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_OPEN( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表5 DBE_FILE.IS_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_OPEN接口返回FALSE。 DBE_FILE.READ_LINE 存储过程DBE_FILE.READ_LINE从一个打开的文件读取数据,并把读取的结果存放到BUFFER中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过OPEN的时候指定的max_line_size。 DBE_FILE.READ_LINE存储过程原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.READ_LINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL); DBE_FILE.READ_LINE( file IN DBE_FILE.FILE_TYPE, buffer OUT TEXT, len IN INTEGER DEFAULT NULL); 表6 DBE_FILE.READ_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 接收数据的BUFFER。 len INTEGE IN 是 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。 DBE_FILE.WRITE 函数DBE_FILE.WRITE用于向文件对应的缓冲区中写入BUFFER中的数据,文件必须以写模式打开,这个操作不会写入行终结符。 DBE_FILE.WRITE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.WRITE( file IN INTEGER, buffer IN TEXT) RETURN BOOLEAN; DBE_FILE.WRITE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT) RETURN VOID; 表7 DBE_FILE.WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer TEXT IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错,该参数为空时接口会直接返回。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.NEW_LINE 函数DBE_FILE.NEW_LINE用于向文件对应的缓冲区中写入一个或者多个行终结符,行终结符和平台相关。 DBE_FILE.NEW_LINE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.NEW_LINE( file IN INTEGER, line_nums IN INTEGER DEFAULT 1) RETURN BOOLEAN; DBE_FILE.NEW_LINE( file IN DBE_FILE.FILE_TYPE, line_nums IN INTEGER DEFAULT 1) RETURN VOID; 表8 DBE_FILE.NEW_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 line_nums INTEGER IN 是 写入到文件中的行终结符的数量,默认值为1,指定为空时不写入行终结符。 DBE_FILE.WRITE_LINE 函数DBE_FILE.WRITE_LINE用于向文件对应的缓冲区中写入BUFFER中的数据,文件必须以写模式打开,这个操作会自动追加行终结符。 DBE_FILE.WRITE_LINE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.WRITE_LINE( file IN INTEGER, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.WRITE_LINE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表9 DBE_FILE.WRITE_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 buffer TEXT IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush BOOLEAN IN 是 在WRITE_LINE后是否要将文件对应缓冲区中的数据刷到磁盘,默认值或者该参数为空时为FALSE。 DBE_FILE.FORMAT_WRITE 函数DBE_FILE.FORMAT_WRITE将格式化数据写入到一个打开的文件对应的缓冲区中,是允许格式化的DBE_FILE.WRITE接口。 DBE_FILE.FORMAT_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_FILE.FORMAT_WRITE( file IN INTEGER, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN BOOLEAN; DBE_FILE.FORMAT_WRITE( file IN DBE_FILE.FILE_TYPE, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN VOID; 表10 DBE_FILE.FORMAT_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 format TEXT IN 是 格式化的字符串,包含文本和格式符\n和%s。若指定为空时,则不写入任何数据。 [arg1. . .arg6] TEXT IN 是 1到6个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数或者参数为空,会使用空串来替代%s。 DBE_FILE.GET_RAW 存储过程DBE_FILE.GET_RAW从一个打开的文件读取RAW类型数据,并把读取的结果存放到buffer中,从r中返回。 DBE_FILE.GET_RAW存储过程原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.GET_RAW( file IN INTEGER, r OUT RAW, length IN INTEGER DEFAULT NULL); DBE_FILE.GET_RAW( file IN DBE_FILE.FILE_TYPE, r OUT RAW, length IN INTEGER DEFAULT NULL); 表11 DBE_FILE.GET_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW OUT 否 接收RAW类型数据的BUFFER。 length INTEGER IN 是 从文件中读取的字节数,默认值为NULL,如果是NULL,会使用RAW类型最大长度来指定大小。 DBE_FILE.PUT_RAW 函数DBE_FILE.PUT_RAW用于向文件对应的缓冲区中写入RAW类型数据。 DBE_FILE.PUT_RAW函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.PUT_RAW ( file IN INTEGER, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.PUT_RAW ( file IN DBE_FILE.FILE_TYPE, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表12 DBE_FILE.PUT_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW IN 否 写入文件的RAW类型数据。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush BOOLEAN IN 是 在PUT_RAW后是否要刷到磁盘,不指定或指定为空时采用FALSE。 DBE_FILE.FLUSH 函数DBE_FILE.FLUSH将缓冲区中的数据写入到物理文件中,缓存中的数据必须要有一个行终结符。该函数可以将缓冲区的数据及时写入到对应的物理文件中。 DBE_FILE.FLUSH函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FLUSH( file IN INTEGER) RETURN VOID; DBE_FILE.FLUSH( file IN DBE_FILE.FILE_TYPE) RETURN VOID; 表13 DBE_FILE.FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE 函数DBE_FILE.CLOSE用于关闭一个打开的文件句柄,当调用这个函数的时候,如果还有等待写入的缓存的数据,可能会收到异常信息,正常关闭返回TRUE。 DBE_FILE.CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.CLOSE( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表14 DBE_FILE.CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE_ALL 函数DBE_FILE.CLOSE_ALL关闭一个会话中打开的所有的文件句柄,可用于紧急的清理操作。 DBE_FILE.CLOSE_ALL函数原型为: 1 2 DBE_FILE.CLOSE_ALL() RETRUN VOID; DBE_FILE.REMOVE 函数DBE_FILE.REMOVE删除一个磁盘文件,使用的时候需要有充分的权限。 DBE_FILE.REMOVE函数原型为: 1 2 3 4 DBE_FILE.REMOVE( dir IN TEXT, file_name IN TEXT) RETURN VOID; 表15 DBE_FILE.REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名。 DBE_FILE.RENAME 函数DBE_FILE.RENAME重命名一个磁盘文件,类似Unix的mv指令。 DBE_FILE.RENAME函数原型为: 1 2 3 4 5 6 7 DBE_FILE.RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表16 DBE_FILE.RENAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要进行命名的源文件。 dest_dir TEXT IN 否 目的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name TEXT IN 否 新的文件名。 overwrite BOOLEAN IN 是 是否重写,参数指定为空或者不指定时表示不重写。在不重写的情况下,如果目的目录下已存在同名文件会报错。 DBE_FILE.COPY 函数DBE_FILE.COPY复制一个连续区域的内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.COPY函数原型为: 1 2 3 4 5 6 7 8 DBE_FILE.COPY( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, start_line IN INTEGER DEFAULT 1, end_line IN INTEGER DEFAULT NULL) RETURN VOID; 表17 DBE_FILE.COPY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要复制的源文件名。 dest_dir TEXT IN 否 目的文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name TEXT IN 否 目的文件名。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 start_line INTEGER IN 否 复制开始的行号,默认为1。 end_line INTEGER IN 是 复制结束的行号,默认为NULL,如果是NULL,则指定到文件尾。 DBE_FILE.GET_ATTR 存储过程DBE_FILE.GET_ATTR读取并返回一个磁盘文件的属性。 DBE_FILE.GET_ATTR存储过程原型为: 1 2 3 4 5 6 DBE_FILE.GET_ATTR( location IN TEXT, filename IN TEXT, fexists OUT BOOLEAN, file_length OUT BIGINT, block_size OUT INTEGER); 表18 DBE_FILE.GET_ATTR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 location TEXT IN 否 文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 filename TEXT IN 否 文件名。 fexists BOOLEAN OUT 否 文件是否存在。 file_length BIGINT OUT 否 文件的字节长度,如果文件不存在返回NULL。 block_size INTEGER OUT 否 文件系统的块大小(单位字节),如果文件不存在返回NULL。 DBE_FILE.SEEK 函数DBE_FILE.SEEK根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.SEEK函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.SEEK( file IN INTEGER, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; DBE_FILE.SEEK( file IN DBE_FILE.FILE_TYPE, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; 表19 DBE_FILE.SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 absolute_start BIGINT IN 是 文件偏移的绝对位置,默认值为NULL。 relative_start BIGINT IN 是 文件偏移的相对位置。如果值是正数,向前偏移;如果是负数,向后偏移;默认值为NULL。如果和absolute_start参数同时指定,以absolute_start参数为准。 DBE_FILE.GET_POS 函数DBE_FILE.GET_POS以字节为单位返回文件当前的偏移量。 DBE_FILE.FGETPOS函数原型为: 1 2 3 4 5 6 7 DBE_FILE.GET_POS( file IN INTEGER) RETURN BIGINT; DBE_FILE.GET_POS( file IN DBE_FILE.FILE_TYPE) RETURN BIGINT; 表20 DBE_FILE.GET_POS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.FOPEN_NCHAR 函数DBE_FILE.FOPEN_NCHAR用来打开一个文件,可以指定最大行的大小,一个会话内最多可以同时打开50个文件。该函数返回一个DBE_FILE.FILE_TYPE类型的文件句柄。该函数以国家字符集模式打开文件以进行输入或输出。 DBE_FILE.FOPEN_NCHAR函数原型为: 1 2 3 4 5 6 DBE_FILE.FOPEN_NCHAR( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表21 DBE_FILE.FOPEN_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在FOPEN_NCHAR中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode TEXT IN 否 指定文件的打开模式,包含r:read text,w: write text, a: append text, rb: read byte, wb: write byte和ab: append byte。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size INTEGER IN 是 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 DBE_FILE.WRITE_NCHAR 函数DBE_FILE.WRITE_NCHAR用于向文件中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作不会写入行终结符,返回值永远为TRUE。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表22 DBE_FILE.WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer VARCHAR2 IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.WRITE_LINE_NCHAR 函数DBE_FILE.WRITE_LINE_NCHAR用于向文件中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作会自动追加行终结符,返回值永远为TRUE。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_LINE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表23 DBE_FILE.WRITE_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 buffer VARCHAR2 IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.FORMAT_WRITE_NCHAR 函数DBE_FILE.FORMAT_WRITE_NCHAR将格式化数据写入到一个打开的文件,是允许格式化的DBE_FILE.WRITE_NCHAR接口,返回值永远为TRUE。 DBE_FILE.FORMAT_WRITE_NCHAR函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FORMAT_WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, format IN NVARCHAR2, arg1 IN NVARCHAR2 DEFAULT NULL, . . . arg5 IN NVARCHAR2 DEFAULT NULL) RETURN VOID; 表24 DBE_FILE.FORMAT_WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 format VARCHAR2 IN 是 格式化的字符串,包含文本和格式符\n和%s。 [arg1. . .arg5] VARCHAR2 IN 是 从1到5个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数,会使用空串来替代%s。 DBE_FILE.READ_LINE_NCHAR 存储过程DBE_FILE.READ_LINE_NCHAR从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过FOPEN_NCHAR的时候指定的max_line_size。 DBE_FILE.READ_LINE_NCHAR存储过程原型为: 1 2 3 4 DBE_FILE.READ_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer OUT NVARCHAR2, len IN INTEGER DEFAULT NULL); 表25 DBE_FILE.READ_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer VARCHAR2 OUT 否 接收数据的buffer。 len INTEGER IN 是 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。
  • 数据类型介绍 DBE_FILE.FILE_TYPE DBE_FILE.FILE_TYPE类型定义了DBE_FILE包中文件的表示方式,DBE_FILE.FILE_TYPE中的字段是DBE_FILE包的私有字段,请不要直接修改DBE_FILE.FILE_TYPE类型对象中字段的值。 1 2 3 4 5 CREATE TYPE DBE_FILE.FILE_TYPE AS( id INTEGER, datatype INTEGER, byte_mode BOOLEAN ); 表1 DBE_FILE.FILE_TYPE字段说明 参数 描述 id 文件句柄。 datatype 表明文件是CHAR文件还是NCHAR文件或者二进制文件,目前支持CHAR文件和NCHAR文件。CHAR文件返回1,NCHAR文件返回2。 byte_mode 表明文件是以二进制模式打开(TRUE)还是以文本模式打开(FALSE)。
  • 注意事项 DBE_FILE要求以DBE_FILE.FOPEN打开的文件是以数据库字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE读取文件时,会发生编码校验错误;DBE_FILE要求以DBE_FILE.FOPEN_NCHAR打开的文件是以UTF-8字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE_NCHAR读取文件时,会发生编码校验错误。 当使用DBE_OUTPUT.PUT_LINE打印DBE_FILE.READ_LINE_NCHAR接口得到的结果时,需要确保UTF-8字符集编码能够转换成当前数据库字符集编码,满足上述条件后可以正常输出结果。DBE_OUTPUT.PRINT_LINE不支持该功能。 DBE_FILE要求客户端字符集编码与数据库字符集编码保持一致。 当数据库字符集编码为ASCII编码、客户端字符集编码为支持中文的编码,且在客户端调用DBE_FILE.WRITE_NCHAR或DBE_FILE.WRITE_LINE_NCHAR接口写入中文相关内容时,若输入的内容为UTF-8编码格式,无法保证写入的内容按UTF-8格式编码。这可能会导致后续使用DBE_FILE.READ_LINE_NCHAR时报错。
  • 接口介绍 高级功能包DBE_FILE支持的所有接口请参见表2。 表2 DBE_FILE 接口名称 描述 DBE_FILE.OPEN/DBE_FILE.FOPEN 根据指定的目录和文件名打开一个文件,返回对应的文件句柄或者封装了文件句柄的DBE_FILE.FILE_TYPE类型对象。 DBE_FILE.IS_CLOSE 检测一个文件句柄是否关闭。 DBE_FILE.IS_OPEN 检测一个文件句柄是否打开。 DBE_FILE.READ_LINE 从一个打开的文件中读取一行指定长度的数据。 DBE_FILE.WRITE 将数据写入到一个打开的文件的缓冲区中。 DBE_FILE.NEW_LINE 将一个或者多个行终结符写入到一个打开的文件的缓冲区中。 DBE_FILE.WRITE_LINE 将数据写入到一个打开的文件的缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE 将数据按指定格式写入到一个打开的文件的缓冲区中。 DBE_FILE.GET_RAW 从一个打开的文件中读取指定字节数的RAW类型数据。 DBE_FILE.PUT_RAW 将RAW类型数据写入到一个打开的文件的缓冲区中。 DBE_FILE.FLUSH 将缓存区中的数据写入到物理文件中。 DBE_FILE.CLOSE 关闭一个打开的文件句柄。 DBE_FILE.CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 DBE_FILE.REMOVE 根据指定的目录和文件名删除一个磁盘文件,操作的时候需要有充分的权限。 DBE_FILE.RENAME 重命名一个磁盘文件,类似UNIX的mv指令。 DBE_FILE.COPY 复制一个连续区域的内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.GET_ATTR 读取并返回一个磁盘文件的属性。 DBE_FILE.SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.GET_POS 以字节为单位返回文件当前的偏移量。 DBE_FILE.FOPEN_NCHAR 以NCHAR模式根据指定的目录和文件名打开一个文件。 DBE_FILE.WRITE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中。 DBE_FILE.WRITE_LINE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE_NCHAR 将NVARCHAR2类型的数据按指定格式写入到一个打开的NCHAR模式文件缓冲区中。 DBE_FILE.READ_LINE_NCHAR 从一个打开的NCHAR模式文件中读取一行指定长度的数据。 DBE_FILE.OPEN/DBE_FILE.FOPEN 函数DBE_FILE.OPEN用来打开一个文件,可以指定文件每行的最大字节数,一个会话内最多可以同时打开50个文件。该函数返回一个INTEGER类型的文件句柄。函数DBE_FILE.FOPEN功能和DBE_FILE.OPEN类似,返回一个DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.OPEN和DBE_FILE.FOPEN函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 DBE_FILE.OPEN( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN INTEGER; DBE_FILE.FOPEN( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表3 DBE_FILE.OPEN/DBE_FILE.FOPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir text IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name text IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在UNIX系统中,文件名不能以/.结尾。 open_mode text IN 否 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size integer IN 是 每行的最大字节数,包含换行符(最小值是1,最大值是32767)。如果没有指定或指定该参数为空,会使用默认值1024。 DBE_FILE.IS_CLOSE 函数DBE_FILE.IS_CLOSE用于检测一个文件句柄是否已经关闭,返回布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_CLOSE( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表4 DBE_FILE.IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_CLOSE接口返回空。 DBE_FILE.IS_OPEN 函数DBE_FILE.IS_OPEN用于检测一个文件句柄是否已经打开,返回布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_OPEN函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_OPEN( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_OPEN( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表5 DBE_FILE.IS_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_OPEN接口返回false。 DBE_FILE.READ_LINE 函数DBE_FILE.READ_LINE从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过OPEN的时候指定的max_line_size。 DBE_FILE.READ_LINE存储过程原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.READ_LINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) RETURN TEXT; DBE_FILE.READ_LINE( file IN DBE_FILE.FILE_TYPE, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) RETURN TEXT; 表6 DBE_FILE.READ_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer text OUT 否 接收数据的buffer。 len integer IN 是 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。 DBE_FILE.WRITE 函数DBE_FILE.WRITE用于向文件对应的缓冲区中写入buffer中的数据,文件必须以写模式打开,这个操作不会写入行终结符。 DBE_FILE.WRITE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.WRITE( file IN INTEGER, buffer IN TEXT) RETURN BOOLEAN; DBE_FILE.WRITE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT) RETURN VOID; 表7 DBE_FILE.WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer text IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错,该参数为空时接口会直接返回。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.NEW_LINE 函数DBE_FILE.NEW_LINE用于向文件对应的缓冲区中写入一个或者多个行终结符,行终结符和平台相关。 DBE_FILE.NEW_LINE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.NEW_LINE( file IN INTEGER, line_nums IN INTEGER DEFAULT 1) RETURN BOOLEAN; DBE_FILE.NEW_LINE( file IN DBE_FILE.FILE_TYPE, line_nums IN INTEGER DEFAULT 1) RETURN VOID; 表8 DBE_FILE.NEW_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 line_nums integer IN 是 写入到文件中的行终结符的数量,默认值为1,指定为空时不写入行终结符。 DBE_FILE.WRITE_LINE 函数DBE_FILE.WRITE_LINE用于向文件对应的缓冲区中写入buffer中的数据,文件必须以写模式打开,这个操作会自动追加行终结符。 DBE_FILE.WRITE_LINE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.WRITE_LINE( file IN INTEGER, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.WRITE_LINE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表9 DBE_FILE.WRITE_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 buffer text IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush boolean IN 是 在WRITE_LINE后是否要将文件对应缓冲区中的数据刷到磁盘,默认值或者该参数为空时为FALSE。 DBE_FILE.FORMAT_WRITE 函数DBE_FILE.FORMAT_WRITE将格式化数据写入到一个打开的文件对应的缓冲区中,是允许格式化的DBE_FILE.WRITE接口。 DBE_FILE.FORMAT_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_FILE.FORMAT_WRITE( file IN INTEGER, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN BOOLEAN; DBE_FILE.FORMAT_WRITE( file IN DBE_FILE.FILE_TYPE, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN VOID; 表10 DBE_FILE.FORMAT_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 format text IN 是 格式化的字符串,包含文本和格式符\n和%s。若指定为空时,则不写入任何数据。 [arg1. . .arg6] text IN 是 1到6个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数或者参数为空,会使用空串来替代%s。 DBE_FILE.GET_RAW 函数DBE_FILE.GET_RAW从一个打开的文件读取RAW类型数据,并把读取的结果存放到buffer中,从r中返回。 DBE_FILE.GET_RAW存储过程原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.GET_RAW( file IN INTEGER, r OUT RAW, length IN INTEGER DEFAULT NULL) RETURN RAW; DBE_FILE.GET_RAW( file IN DBE_FILE.FILE_TYPE, r OUT RAW, length IN INTEGER DEFAULT NULL) RETURN BOOLEAN; 表11 DBE_FILE.GET_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW OUT 否 接收RAW类型数据的buffer。 length INTEGER IN 是 从文件中读取的字节数,默认值为NULL,如果是NULL,会使用RAW类型最大长度来指定大小。 DBE_FILE.PUT_RAW 函数DBE_FILE.PUT_RAW用于向文件对应的缓冲区中写入RAW类型数据。 DBE_FILE.PUT_RAW函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.PUT_RAW ( file IN INTEGER, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.PUT_RAW ( file IN DBE_FILE.FILE_TYPE, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表12 DBE_FILE.PUT_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW IN 否 写入文件的RAW类型数据。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush BOOLEAN IN 是 在PUT_RAW后是否要刷到磁盘,不指定或指定为空时采用FALSE。 DBE_FILE.FLUSH 函数DBE_FILE.FLUSH将缓冲区中的数据写入到物理文件中,缓存中的数据必须要有一个行终结符。该函数可以将缓冲区的数据及时写入到对应的物理文件中。 DBE_FILE.FLUSH函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FLUSH( file IN INTEGER) RETURN VOID; DBE_FILE.FLUSH( file IN DBE_FILE.FILE_TYPE) RETURN VOID; 表13 DBE_FILE.FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE 函数DBE_FILE.CLOSE用于关闭一个打开的文件句柄,当调用这个函数的时候,如果还有等待写入的缓存的数据,可能会收到异常信息,正常关闭返回TRUE。 DBE_FILE.CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.CLOSE( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表14 DBE_FILE.CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file integer或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE_ALL 函数DBE_FILE.CLOSE_ALL关闭一个会话中打开的所有的文件句柄,可用于紧急的清理操作。 DBE_FILE.CLOSE_ALL函数原型为: 1 2 DBE_FILE.CLOSE_ALL() RETRUN VOID; DBE_FILE.REMOVE 函数DBE_FILE.REMOVE删除一个磁盘文件,使用的时候需要有充分的权限。 DBE_FILE.REMOVE函数原型为: 1 2 3 4 DBE_FILE.REMOVE( dir IN TEXT, file_name IN TEXT) RETURN VOID; 表15 DBE_FILE.REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名。 DBE_FILE.RENAME 函数DBE_FILE.RENAME重命名一个磁盘文件,类似Unix的mv指令。 DBE_FILE.RENAME函数原型为: 1 2 3 4 5 6 7 DBE_FILE.RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表16 DBE_FILE.RENAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要进行命名的源文件。 dest_dir TEXT IN 否 目的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name text IN 否 新的文件名。 overwrite boolean IN 是 是否重写,参数指定为空或者不指定时表示不重写。在不重写的情况下,如果目的目录下已存在同名文件会报错。 DBE_FILE.COPY 函数DBE_FILE.COPY复制一个连续区域的内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.COPY函数原型为: 1 2 3 4 5 6 7 8 DBE_FILE.COPY( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, start_line IN INTEGER DEFAULT 1, end_line IN INTEGER DEFAULT NULL) RETURN VOID; 表17 DBE_FILE.COPY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要复制的源文件名。 dest_dir TEXT IN 否 目的文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name TEXT IN 否 目的文件名。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 start_line TEXT IN 否 复制开始的行号,默认为1。 end_line TEXT IN 是 复制结束的行号,默认为NULL,如果是NULL,则指定到文件尾。 DBE_FILE.GET_ATTR 函数DBE_FILE.GET_ATTR读取并返回一个磁盘文件的属性。 DBE_FILE.GET_ATTR存储过程原型为: 1 2 3 4 5 6 7 DBE_FILE.GET_ATTR( location IN TEXT, filename IN TEXT, fexists OUT BOOLEAN, file_length OUT BIGINT, block_size OUT INTEGER) RETURN RECORD; 表18 DBE_FILE.GET_ATTR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 location TEXT IN 否 文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 filename TEXT IN 否 文件名。 fexists boolean OUT 否 文件是否存在。 file_length BIGINT OUT 否 文件的字节长度,如果文件不存在返回NULL。 block_size INTEGE OUT 否 文件系统的块大小(单位字节),如果文件不存在返回NULL。 DBE_FILE.SEEK 函数DBE_FILE.SEEK根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.SEEK函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.SEEK( file IN INTEGER, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; DBE_FILE.SEEK( file IN DBE_FILE.FILE_TYPE, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; 表19 DBE_FILE.SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 absolute_start BIGINT IN 是 文件偏移的绝对位置,默认值为NULL。 relative_start BIGINT IN 是 文件偏移的相对位置。如果值是正数,向前偏移;如果是负数,向后偏移;默认值为NULL。如果和absolute_start参数同时指定,以absolute_start参数为准。 DBE_FILE.GET_POS 函数DBE_FILE.GET_POS以字节为单位返回文件当前的偏移量。 DBE_FILE.FGETPOS函数原型为: 1 2 3 4 5 6 7 DBE_FILE.GET_POS( file IN INTEGER) RETURN BIGINT; DBE_FILE.GET_POS( file IN DBE_FILE.FILE_TYPE) RETURN BIGINT; 表20 DBE_FILE.GET_POS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或dbe_file.file_type IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.FOPEN_NCHAR 函数DBE_FILE.FOPEN_NCHAR用来打开一个文件,可以指定文件每行的最大字节数,一个会话内最多可以同时打开50个文件。该函数返回一个封装了文件句柄的DBE_FILE.FILE_TYPE类型对象。该函数以国家字符集模式打开文件以进行输入或输出。 DBE_FILE.FOPEN_NCHAR函数原型为: 1 2 3 4 5 6 DBE_FILE.FOPEN_NCHAR( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表21 DBE_FILE.FOPEN_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在FOPEN_NCHAR中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode TEXT IN 否 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size integer IN 是 每行的最大字节数,包含换行符(最小值是1,最大值是32767)。如果没有指定或指定该参数为空,会使用默认值1024。 DBE_FILE.WRITE_NCHAR 函数DBE_FILE.WRITE_NCHAR用于向文件的缓冲区中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作不会写入行终结符。文本字符串将以UTF-8字符集格式写入。 DBE_FILE.WRITE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表22 DBE_FILE.WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file dbe_file.file_type IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer NVARCHAR2 IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.WRITE_LINE_NCHAR 函数DBE_FILE.WRITE_LINE_NCHAR用于向文件的缓冲区中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作会自动追加行终结符。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_LINE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表23 DBE_FILE.WRITE_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file dbe_file.file_type IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 buffer NVARCHAR2 IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.FORMAT_WRITE_NCHAR 函数DBE_FILE.FORMAT_WRITE_NCHAR将格式化数据写入到一个打开的文件的缓冲区中,是允许格式化的DBE_FILE.WRITE_NCHAR接口。 DBE_FILE.FORMAT_WRITE_NCHAR函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FORMAT_WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, format IN NVARCHAR2, arg1 IN NVARCHAR2 DEFAULT NULL, . . . arg5 IN NVARCHAR2 DEFAULT NULL) RETURN VOID; 表24 DBE_FILE.FORMAT_WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file dbe_file.file_type IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 format NVARCHAR2 IN 是 格式化的字符串,包含文本和格式符\n和%s。 [arg1. . .arg5] NVARCHAR2 IN 是 1到5个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数,会使用空串来替代%s。 DBE_FILE.READ_LINE_NCHAR 函数DBE_FILE.READ_LINE_NCHAR从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过FOPEN_NCHAR的时候指定的max_line_size。 DBE_FILE.READ_LINE_NCHAR存储过程原型为: 1 2 3 4 5 DBE_FILE.READ_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer OUT NVARCHAR2, len IN INTEGER DEFAULT NULL) RETURN NVARCHAR2; 表25 DBE_FILE.READ_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file dbe_file.file_type IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer NVARCHAR2 OUT 否 接收数据的buffer。 len INTEGER IN 是 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。
  • 注意事项 DBE_FILE要求以DBE_FILE.FOPEN打开的文件是以数据库字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE读取文件时,会发生编码校验错误;DBE_FILE要求以DBE_FILE.FOPEN_NCHAR打开的文件是以UTF-8字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE_NCHAR读取文件时,会发生编码校验错误。 当使用DBE_OUTPUT.PUT_LINE打印DBE_FILE.READ_LINE_NCHAR接口得到的结果时,需要确保UTF-8字符集编码能够转换成当前数据库字符集编码,满足上述条件后可以正常输出结果。DBE_OUTPUT.PRINT_LINE不支持该功能。 DBE_FILE要求客户端字符集编码与数据库字符集编码保持一致。 当数据库字符集编码为ASCII编码,客户端字符集编码为支持中文的编码,且在客户端调用DBE_FILE.WRITE_NCHAR或DBE_FILE.WRITE_LINE_NCHAR接口写入中文相关内容时,若输入的内容为UTF-8编码格式,无法保证写入的内容按UTF-8格式编码。这可能会导致后续使用DBE_FILE.READ_LINE_NCHAR时报错。
  • 数据类型介绍 DBE_FILE.FILE_TYPE DBE_FILE.FILE_TYPE类型定义了DBE_FILE包中文件的表示方式,DBE_FILE.FILE_TYPE中的字段是DBE_FILE包的私有字段,请不要直接修改DBE_FILE.FILE_TYPE类型对象中字段的值。 1 2 3 4 5 CREATE TYPE DBE_FILE.FILE_TYPE AS( id INTEGER, datatype INTEGER, byte_mode BOOLEAN ); 表1 DBE_FILE.FILE_TYPE字段说明 参数 描述 id 文件句柄。 datatype 表明文件是CHAR文件还是NCHAR文件或者二进制文件,目前支持CHAR文件和NCHAR文件。CHAR文件返回1,NCHAR文件返回2。 byte_mode 表明文件是以二进制模式打开(TRUE)还是以文本模式打开(FALSE)。
  • 接口介绍 高级功能包DBE_UTILITY支持的所有接口请参见表1。 表1 DBE_UTILITY 接口名称 描述 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 输出存储过程异常的调用堆栈。 DBE_UTILITY.FORMAT_ERROR_STACK 输出存储过程异常的具体信息。 DBE_UTILITY.FORMAT_CALL_STACK 输出存储过程的调用堆栈。 DBE_UTILITY.GET_TIME 输出当前时间,一般用于做差得到执行时长。 DBE_UTILITY.CANONICALIZE 用于给表名字符串做规范。 DBE_UTILITY.COMMA_TO_TABLE 将用逗号隔开的名字列表的字符串转换为PL/SQL表名列表。 DBE_UTILITY.DB_VERSION 返回数据库的版本号和兼容性版本号。 DBE_UTILITY.EXEC_DDL_STATEMENT 用于执行用户输入的DDL语句。 DBE_UTILITY.EXPAND_SQL_TEXT_PROC 用于展开SQL查询的视图。 DBE_UTILITY.GET_CPU_TIME 返回当前CPU处理时间的测量值。 DBE_UTILITY.GET_ENDIANNESS 用于获取数据库所在平台字节序的大小端信息。 DBE_UTILITY.GET_HASH_VALUE 返回一个给定字符串的哈希值。 DBE_UTILITY.GET_SQL_HASH 输出一个给定字符串的哈希值,该存储过程在不打开proc_outparam_override时使用。 DBE_UTILITY.IS_BIT_SET 用于检查参数n是否存在于r。 DBE_UTILITY.IS_CLUSTER_DATABASE 用于判断当前数据库是否在数据库集群模式下运行。 DBE_UTILITY.NAME_RESOLVE 解析给定的对象名称,包括同义词翻译和必要的授权检查。 DBE_UTILITY.NAME_TOKENIZE 用于解析a [. b [. c ]][@ dblink ]形式的名字。 DBE_UTILITY.OLD_CURRENT_SCHEMA 返回当前用户环境下的数据库模式名称。 DBE_UTILITY.OLD_CURRENT_USER 返回当前用户的名称。 DBE_UTILITY.TABLE_TO_COMMA 将PL/SQL中的表名转换为用逗号隔开的名字列表的字符串。 DBE_UTILITY.GET_SQL_HASH_FUNC 功能同DBE_UTILITY.GET_SQL_HASH,该函数在打开proc_outparam_override时使用。 DBE_UTILITY.EXPAND_SQL_TEXT 内部函数,不建议用户使用。 DBE_UTILITY.CANONICALIZE_RET 内部函数,不建议用户使用。 DBE_UTILITY.COMMA_TO_TABLE_FUN 内部函数,不建议用户使用。 DBE_UTILITY.COMPILE_SCH.... 内部函数,不建议用户使用,推荐使用pkg_util.gs_compile_schema。 DBE_UTILITY.NAME_SEPARATE 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.PRIVILEGE_CHECK 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_CLASS_WITH_NSPOID_ONAME_TYPE 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJECTS 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJECTS_SYNONYM_FILL_SECHEMA 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_PROCEDURE_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_SYNONM_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.TABLE_TO_COMMA_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.USER_NAME 内部函数,不建议用户使用。 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 存储过程FORMAT_ERROR_BACKTRACE返回在执行过程中出现错误时,出现错误位置的调用堆栈。DBE_UTILITY.FORMAT_ERROR_BACKTRACE函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_BACKTRACE() RETURN TEXT; DBE_UTILITY.FORMAT_ERROR_STACK 存储过程FORMAT_ERROR_STACK返回在执行过程中出现错误时,出现错误位置的具体信息。DBE_UTILITY.FORMAT_ERROR_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_STACK() RETURN TEXT; DBE_UTILITY.FORMAT_CALL_STACK 存储过程FORMAT_CALL_STACK设置输出函数调用堆栈。DBE_UTILITY.FORMAT_CALL_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_CALL_STACK() RETURN TEXT; DBE_UTILITY.COMPILE_SCHEMA 重编译指定schema下的PL/SQL类型包和函数(系统自带的包和函数除外), DBE_UTILITY.COMPILE_SCHEMA函数原型为: DBE_UTILITY.COMPILE_SCHEMA ( SCHEMA IN VARCHAR2, COMPILE_ALL IN BOOLEAN DEFAULT TRUE, REUSE_SETTINGS IN BOOLEAN DEFAULT FALSE ) RETURNS VOID; 示例参考11.12.1.2中pkg_util.utility_compile_schema函数使用方式, 调用处改为: call DBE_UTILITY.compile_schema('pkg_var_test'); DBE_UTILITY.GET_TIME 存储过程GET_TIME设置输出时间,通常用于做差,单独的返回值没有意义。DBE_UTILITY.GET_TIME函数原型为: 1 2 DBE_UTILITY.GET_TIME() RETURN BIGINT;