云服务器内容精选

  • 接口介绍 高级功能包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_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_FILE支持的所有接口请参见表2。 表2 DBE_FILE 接口名称 描述 DBE_FILE.OPEN 根据指定的目录和文件名打开一个文件,返回对应的文件句柄或者封装了文件句柄的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.WRITE_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接口参数说明 参数 类型 入参/出参 是否可以为空 描述 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 INTEGE IN 是 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_linesize来指定大小。 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.WRITE_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 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 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 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中的数据,文件必须以国家字符集模式和写模式打开,这个操作不会写入行终结符。文本字符串将以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中的数据,文件必须以国家字符集模式和写模式打开,这个操作会自动追加行终结符。文本字符串将以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接口。 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 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 VARCHAR2 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)。
  • 示例 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 --获取字符串的长度 SELECT DBE_LOB.GET_LENGTH('12345678'); get_length ------------ 8 (1 row) -- DBE_LOB.READ接口示例 DECLARE myraw RAW(100); amount INTEGER :=2; buffer INTEGER :=1; begin DBE_LOB.READ('123456789012345',amount,buffer,myraw); dbe_output.print_line(myraw); end; / 0123 ANONYMOUS BLOCK EXECUTE CREATE TABLE blob_Table (t1 blob) DISTRIBUTE BY REPLICATION; CREATE TABLE blob_Table_bak (t2 blob) DISTRIBUTE BY REPLICATION; INSERT INTO blob_Table VALUES('abcdef'); INSERT INTO blob_Table_bak VALUES('22222'); -- DBE_LOB多接口示例 DECLARE str varchar2(100) := 'abcdef'; source raw(100); dest blob; copyto blob; amount int; PSV_SQL varchar2(100); PSV_SQL1 varchar2(100); a int :=1; len int; BEGIN source := dbe_raw.cast_from_varchar2_to_raw(str); amount := dbe_raw.get_length(source); PSV_SQL :='select * from blob_Table for update'; PSV_SQL1 := 'select * from blob_Table_bak for update'; EXECUTE IMMEDIATE PSV_SQL into dest; EXECUTE IMMEDIATE PSV_SQL1 into copyto; DBE_LOB.WRITE(dest, amount, 1, source); DBE_LOB.WRITE_APPEND(dest, amount, source); DBE_LOB.ERASE(dest, a, 1); DBE_OUTPUT.PRINT_LINE(a); DBE_LOB.COPY(copyto, dest, amount, 10, 1); perform DBE_LOB.CLOSE(dest); RETURN; END; / 1 ANONYMOUS BLOCK EXECUTE --删除表 DROP TABLE blob_Table; DROP TABLE DROP TABLE blob_Table_bak; DROP TABLE
  • 接口介绍 高级功能包DBE_LOB支持的所有接口参见表1。 A数据库中空格的实际字节内容为00, GaussDB 中空格对应字节内容为ASCII码值(32)。 分布式环境中,clob、blob以及bfile最大支持1GB。 LOBMAXSIZE最大支持1073741771字节。 表1 DBE_LOB 接口名称 描述 DBE_LOB.GET_LENGTH 获取并返回指定的LOB类型对象的长度(不支持大于2GB)。 DBE_LOB.LOB_GET_LENGTH 获取并返回指定的LOB类型对象/BFILE文件的长度。 DBE_LOB.OPEN 打开一个LOB类型对象返回一个LOB的描述符。 DBE_LOB.READ 根据指定的长度及起始位置偏移读取LOB内容的一部分到BUFFER缓冲区。 DBE_LOB.LOB_READ 根据指定的长度及起始位置偏移读取LOB内容的一部分到BUFFER缓冲区(支持bfile读取)。 DBE_LOB.WRITE 根据指定长度及起始位置偏移将BUFFER中内容写入到LOB中。 DBE_LOB.WRITE_APPEND 根据指定长度将BUFFER中内容写入到LOB的尾部。 DBE_LOB.LOB_WRITE_APPEND 根据指定长度将BUFFER中内容写入到LOB的尾部。 DBE_LOB.COPY 根据指定长度及起始位置偏移将LOB内容写入到另一个LOB中。 DBE_LOB.LOB_COPY 根据指定长度及起始位置偏移将LOB内容写入到另一个LOB中。 DBE_LOB.ERASE 根据指定长度及起始位置偏移删除LOB中的内容(不支持大于1GB)。 DBE_LOB.LOB_ERASE 根据指定长度及起始位置偏移删除LOB中的内容。 DBE_LOB.CLOSE 关闭已经打开的LOB描述符。 DBE_LOB.MATCH 返回一个字符串在LOB中第N次出现的位置。 DBE_LOB.COMPARE 比较两个LOB或者两个LOB的某一部分(支持bfile比较)。 DBE_LOB.SUBSTR 用于读取一个LOB的子串,返回读取到的子串。 DBE_LOB.LOB_SUBSTR 用于读取一个LOB或者BFILE的子串,返回读取到的子串。 DBE_LOB.STRIP 用于截断指定长度的LOB,执行完会将LOB的长度设置为参数指定的长度。 DBE_LOB.LOB_STRIP 用于截断指定长度的LOB,执行完会将LOB的长度设置为参数指定的长度。 DBE_LOB.CREATE_TEMPORARY 创建一个临时的BLOB或者CLOB对象。 DBE_LOB.APPEND 将源LOB的内容拼接到目的LOB中。 DBE_LOB.LOB_APPEND 将源LOB的内容拼接到目的LOB中。 DBE_LOB.FREETEMPORARY 删除一个临时的BLOB或者CLOB对象。 DBE_LOB.FILEOPEN 打开一个数据库BFILE文件,并返回文件描述符。 DBE_LOB.FILECLOSE 关闭由FILEOPEN打开的BFILE文件。 DBE_LOB.BFILEOPEN 打开一个数据库BFILE文件。 DBE_LOB.BFILECLOSE 关闭一个由BFILEOPEN打开的BFILE文件。 DBE_LOB.LOADFROMFILE 读取指定位置和长度的数据库BFILE文件到指定位置的BLOB对象中。 DBE_LOB.LOADFROMBFILE 读取指定位置和长度的数据库BFILE文件到指定位置的LOB中。 DBE_LOB.LOADBLOBFROMFILE 读取指定位置和长度的数据库外部文件到指定位置的BLOB中(不支持大于1GB)。 DBE_LOB.LOADBLOBFROMBFIL... 读取指定位置和长度的数据库BFILE文件到指定位置的BLOB中。 DBE_LOB.LOADCLOBFROMFILE 读取指定位置和长度的数据库外部文件到指定位置的CLOB中(不支持大于1GB)。 DBE_LOB.LOADCLOBFROMBFIL... 读取指定位置和长度的数据库BFILE文件到指定位置的CLOB中。 DBE_LOB.CONVERTTOBLOB 将CLOB类型文件转换为BLOB类型文件(不支持大于1GB)。 DBE_LOB.CONVERTTOCLOB 将BLOB类型文件转换为CLOB类型文件(不支持大于1GB)。 DBE_LOB.LOB_CONVERTTOBLO... 将CLOB类型文件转换为BLOB类型文件。 DBE_LOB.LOB_CONVERTTOCLO... 将BLOB类型文件转换为CLOB类型文件。 DBE_LOB.GETCHUNKSIZE 获取数据库中CHUNK结构中用于存储LOB数据的最大SIZE。 DBE_LOB.LOB_WRITE 将源对象从起始位置读取指定长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 DBE_LOB.BFILENAME 根据目录和文件名构造返回DBE_LOB.BFILE对象。 DBE_LOB.GET_LENGTH 函数GET_LENGTH获取并返回指定的LOB类型对象的长度,最大支持2GB。 DBE_LOB.GET_LENGTH函数原型为: 1 2 3 4 5 6 7 DBE_LOB.GET_LENGTH ( blob_obj IN BLOB) RETURN INTEGER; DBE_LOB.GET_LENGTH ( clob_obj IN CLOB) RETURN INTEGER; 表2 DBE_LOB.GET_LENGTH接口参数说明 参数 描述 blob_obj/clob_obj 待获取长度的BLOB/CLOB类型对象。 DBE_LOB.LOB_GET_LENGTH 函数LOB_GET_LENGTH获取并返回指定的LOB类型对象/BFILE文件的长度,最大支持32TB。 DBE_LOB.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.LOB_GET_LENGTH ( blob_obj IN BLOB) RETURN BIGINT; DBE_LOB.LOB_GET_LENGTH ( clob_obj IN CLOB) RETURN BIGINT; DBE_LOB.LOB_GET_LENGTH ( bfile IN DBE_LOB.BFILE) RETURN BIGINT; 表3 DBE_LOB.LOB_GET_LENGTH接口参数说明 参数 描述 blob_obj/clob_obj/bfile 待获取长度的BLOB/CLOB/BFILE类型对象。 DBE_LOB.OPEN 存储过程打开一个LOB,并返回一个LOB描述符,该过程无实际意义,仅用于兼容。 DBE_LOB.OPEN函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.OPEN ( lob INOUT BLOB); DBE_LOB.OPEN ( lob INOUT CLOB); DBE_LOB.OPEN ( bfile INOUT DBE_LOB.BFILE, open_mode IN TEXT DEFAULT 'null'); 表4 DBE_LOB.OPEN接口参数说明 参数 描述 lob/bfile 被打开的BLOB或者CLOB对象或者bfile文件。 open_mode 操作模式,现支持[R,W,A,RB,WB,AB]。 DBE_LOB.READ 存储过程READ根据指定长度及起始位置偏移读取LOB内容的一部分到out_put缓冲区。 DBE_LOB.READ函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.READ ( blob_obj IN BLOB, amount IN INTEGER, off_set IN INTEGER, out_put OUT RAW); DBE_LOB.READ ( clob_obj IN CLOB, amount IN INTEGER, off_set IN INTEGER, out_put OUT VARCHAR2); 表5 DBE_LOB.READ接口参数说明 参数 说明 blob_obj/clob_obj 待读入的BLOB/CLOB类型对象。 amount 读入长度。 说明: 如果读入长度小于1,或大于32767,则报错。 off_set 指定从参数lob的哪个位置开始读取的偏移(即相对lob内容起始位置的字节数)。如果偏移量小于1或者大于lob长度,则报错。初始位置为1。 out_put 读取参数lob内容后存放的目标缓冲区。 DBE_LOB.LOB_READ 存储过程LOB_READ根据指定长度及起始位置偏移读取LOB/BFILE内容的一部分到out_put缓冲区。 DBE_LOB.LOB_READ函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 DBE_LOB.LOB_READ( blob_obj IN BLOB, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT RAW); DBE_LOB.LOB_READ( clob_obj IN CLOB, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT VARCHAR2); DBE_LOB.LOB_READ( bfile IN DBE_LOB.BFILE, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT RAW); 表6 DBE_LOB.LOB_READ接口参数说明 参数 说明 blob_obj/clob_obj/bfile 待读入的BLOB/CLOB/BFILE类型对象(支持大于1GB)。 amount IN参数为读入长度,OUT参数为实际读取的长度。 说明: 如果读入长度为小于1,或大于32767,则报错。 off_set 指定从参数lob的哪个位置开始读取的偏移(即相对lob内容起始位置的字节数)。如果偏移量小于1或者大于lob长度,则报错。初始位置为1。 out_put 读取参数lob内容后存放的目标缓冲区。 DBE_LOB.WRITE 存储过程WRITE根据指定长度及起始位置将source中内容写入到LOB对象中。 DBE_LOB.WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.WRITE ( blob_obj INOUT BLOB, amount IN INTEGER, off_set IN INTEGER, source IN RAW); DBE_LOB.WRITE ( clob_obj INOUT CLOB, amount IN INTEGER, off_set IN INTEGER, source IN VARCHAR2); 表7 DBE_LOB.WRITE接口参数说明 参数 说明 blob_obj/clob_obj 待写入的BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 off_set 指定从blob_obj/clob_obj的哪个位置开始写入的偏移(即相对LOB内容起始位置的字节数)。 说明: 如果偏移量小于1或者大于LOBMAXSIZE时,则报错。初始位置是1,最大值为LOB类型最大长度。 source 待写入的内容。 DBE_LOB.WRITE_APPEND 存储过程WRITE_APPEND根据指定长度将source_obj中内容写入到LOB的尾部。 DBE_LOB.WRITE_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.WRITE_APPEND ( blob_obj INOUT BLOB, amount IN INTEGER, source_obj IN RAW); DBE_LOB.WRITE_APPEND ( clob_obj INOUT CLOB, amount IN INTEGER, source_obj IN VARCHAR2); 表8 DBE_LOB.WRITE_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 待写入的指定BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 source_obj 待写入的内容。 DBE_LOB.LOB_WRITE_APPEND 存储过程LOB_WRITE_APPEND根据指定长度将source_obj中内容写入到LOB的尾部。 DBE_LOB.LOB_WRITE_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.LOB_WRITE_APPEND( blob_obj INOUT BLOB, amount IN INTEGER, source_obj IN RAW); DBE_LOB.LOB_WRITE_APPEND ( clob_obj INOUT CLOB, amount IN INTEGER, source_obj IN VARCHAR2); 表9 DBE_LOB.LOB_WRITE_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 待写入的指定BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 source_obj 待写入的内容。 DBE_LOB.COPY 存储过程COPY根据指定长度及起始位置偏移将LOB内容拷贝到另一个LOB中。 DBE_LOB.COPY函数原型为: 1 2 3 4 5 6 DBE_LOB.COPY ( dest_lob INOUT BLOB, src_lob IN BLOB, len IN INTEGER, dest_start IN INTEGER DEFAULT 1, src_start IN INTEGER DEFAULT 1); 表10 DBE_LOB.COPY接口参数说明 参数 说明 dest_lob 待拷入的LOB类型对象。 src_lob 待拷出的LOB类型对象。 len 拷贝长度。 dest_start 指定从dest_lob内容的哪个位置开始拷入的偏移(即相对LOB内容起始位置的字节数)。 src_start 指定从src_lob内容的哪个位置开始拷出的偏移(即相对LOB内容起始位置的字节数)。 DBE_LOB.LOB_COPY 存储过程COPY根据指定长度及起始位置偏移将LOB内容拷贝到另一个LOB中。 DBE_LOB.LOB_COPY函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 DBE_LOB.LOB_COPY( blob_obj INOUT BLOB, source_obj IN BLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1); DBE_LOB.LOB_COPY( clob_obj INOUT CLOB, source_obj IN CLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1); 表11 DBE_LOB.LOB_COPY接口参数说明 参数 说明 blob_obj/clob_obj 待拷入的LOB类型对象。 source_obj 待拷出的LOB类型对象。 amount 拷贝长度。 说明: 如果拷入长度小于1或拷入长度大于LOBMAXSIZE,则报错。 dest_offset 指定从blob_obj/clob_obj内容的哪个位置开始拷入的偏移(即相对LOB内容起始位置的字节数/字符数,BLOB对象以字节为单位,CLOB对象以字符为单位)。。 说明: 如果偏移量小于1或者大于LOBMAXSIZE,则报错。 src_offset 指定从source_obj内容的哪个位置开始拷出的偏移(即相对LOB内容起始位置的字节数/字符数,BLOB对象以字节为单位,CLOB对象以字符为单位)。。 说明: 如果偏移量小于1则报错。 DBE_LOB.ERASE 存储过程ERASE根据指定长度及起始位置偏移删除blob_obj中的内容(不支持大于1GB),blob_obj中删除部分的字节填充为0。 DBE_LOB.ERASE函数原型为: 1 2 3 4 DBE_LOB.ERASE ( blob_obj INOUT BLOB, amount INOUT INTEGER, off_set IN INTEGER DEFAULT 1); 表12 DBE_LOB.ERASE接口参数说明 参数 说明 blob_obj IN参数为待删除内容的LOB类型对象,OUT参数为删除指定部分后的LOB类型对象,传空报错。 amount IN参数为待删除的长度(BLOB对象以字节为单位),OUT参数为实际删除的长度。 说明: 如果删除长度小于1或传空,则报错。 off_set 指定从LOB内容的哪个位置开始删除的偏移(即相对BLOB内容起始位置的字节数,不支持大于1GB)。 说明: 如果偏移量小于1或偏移量传空,则报错。 DBE_LOB.LOB_ERASE 存储过程LOB_ERASE根据指定长度及起始位置偏移删除LOB中的内容,blob中删除部分的字节填充为0,clob中删除部分的字符填充为空格,支持LOB大于1GB,最大支持32TB。 DBE_LOB.LOB_ERASE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.LOB_ERASE ( blob_obj INOUT BLOB, amount INOUT BIGINT, off_set IN BIGINT DEFAULT 1); DBE_LOB.LOB_ERASE ( clob_obj INOUT CLOB, amount INOUT BIGINT, off_set IN BIGINT DEFAULT 1); 表13 DBE_LOB.LOB_ERASE接口参数说明 参数 说明 blob_obj/clob_obj IN参数为待删除内容的LOB类型对象,OUT参数为删除指定部分后的LOB类型对象,传空报错。 amount IN参数为待删除的长度(BLOB对象以字节为单位,CLOB对象以字符为单位),OUT参数为实际删除的长度。 说明: 如果删除长度小于1或传空,则报错。 off_set 指定从LOB内容的哪个位置开始删除的偏移(即相对BLOB内容起始位置的字节数/相对CLOB内容起始位置的字符数)。 说明: 如果偏移量小于1或偏移量传空,则报错。 DBE_LOB.CLOSE 存储过程CLOSE关闭已经打开的LOB描述符。 DBE_LOB.CLOSE函数原型为: 1 2 3 4 5 6 7 8 DBE_LOB.CLOSE( lob IN BLOB); DBE_LOB.CLOSE ( lob IN CLOB); DBE_LOB.CLOSE ( file IN INTEGER); 表14 DBE_LOB.CLOSE接口参数说明 参数 说明 lob/file 待关闭的BLOB/CLOB/文件类型对象。 DBE_LOB.MATCH 该函数返回字符串在LOB或者BFILE文件中第N次出现的位置,如果输入的是一些无效值会返回NULL值。支持LOB或者BFILE文件大于1GB,最大支持32TB。 DBE_LOB.MATCH函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 DBE_LOB.MATCH( blob_obj IN BLOB, blob_obj2 IN RAW, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; DBE_LOB.MATCH( clob_obj IN CLOB, clob_obj2 IN VARCHAR2, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; DBE_LOB.MATCH( bfile IN DBE_LOB.BFILE, blob_obj2 IN RAW, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; 表15 DBE_LOB.MATCH接口参数说明 参数 说明 blob_obj/clob_obj/bfile 要查找的BLOB/CLOB描述符,或者BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开),传空返回null。 blob_obj2/clob_obj2 要匹配的模式,对于BLOB/BFILE是由一组RAW类型的数据组成,对于CLOB是由一组VARCHAR2类型的数据组成,传空返回null。 beg_index 对于BLOB/BFILE是以字节为单位的绝对偏移量,对于CLOB是以字符为单位的偏移量,模式匹配的起始位置是1。 说明: 有效范围为1~LOBMAXSIZE,超过返回null。 occur_index 模式匹配的次数,最小值为1。 说明: 若大于模式串在lob中最大能匹配上的次数,则返回0,若不在范围1~LOBMAXSIZE,则返回null。 DBE_LOB.COMPARE 这个函数比较部分或者全部LOB或BFILE。 如果比较的结果相等返回0,否则返回非零的值。 如果第一个LOB比第二个小,返回-1;如果第一个LOB比第二个大,返回1。 如果len,start1,start2这几个参数有无效参数返回NULL,有效的偏移量范围是1~LOBMAXSIZE。 如果start_pos1,start_pos2同时超过LOB/BFILE长度,则返回0。 DBE_LOB.COMPARE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 DBE_LOB.COMPARE ( lob1 IN BLOB, lob2 IN BLOB, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; DBE_LOB.COMPARE ( lob1 IN CLOB, lob2 IN CLOB, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; DBE_LOB.COMPARE ( file1 IN DBE_LOB.BFILE, file2 IN DBE_LOB.BFILE, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; 表16 DBE_LOB.COMPARE接口参数说明 参数 说明 lob1/file1 第一个要比较的BLOB/CLOB/BFILE类型对象(必须先通过DBE_LOB.BFILEOPEN打开)。 lob2/file2 第二个要比较的BLOB/CLOB/BFILE类型对象(必须先通过DBE_LOB.BFILEOPEN打开)。 len 要比较的字符数或者字节数,默认值为1073741312。 start_pos1 第一个LOB描述符的偏移量,初始位置是1,最大值为lob类型最大长度。 start_pos2 第二个LOB描述符的偏移量,初始位置是1,最大值为lob类型最大长度。 DBE_LOB.SUBSTR 该函数用于读取一个LOB的子串,返回读取的子串。 DBE_LOB.SUBSTR函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.SUBSTR( lob_loc IN BLOB, amount IN INTEGER DEFAULT 32767, off_set IN INTEGER DEFAULT 1) RETURN RAW; DBE_LOB.SUBSTR( lob_loc IN CLOB, amount IN INTEGER DEFAULT 32767, off_set IN INTEGER DEFAULT 1) RETURN VARCHAR2; 表17 DBE_LOB.SUBSTR接口参数说明 参数 说明 lob_loc 将要读取子串的LOB描述符,对于BLOB的返回值是读取的RAW类型,对于CLOB类型的返回值是VARCHAR2类型。 amount 要读取的字节数或者字符数量。 说明: 范围为1~32767,超出返回NULL。 off_set 从开始位置偏移的字符数或者字节数量。 说明: 范围为1~LOBMAXSIZE,超出返回NULL。 DBE_LOB.LOB_SUBSTR 该函数用于读取一个LOB或者BFILE的子串,返回读取的子串,支持LOB或者BFILE大于1GB,最大支持32TB。 DBE_LOB.LOB_SUBSTR函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 DBE_LOB.LOB_SUBSTR( lob_loc IN BLOB, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN RAW; DBE_LOB.LOB_SUBSTR( lob_loc IN CLOB, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN VARCHAR2; DBE_LOB.LOB_SUBSTR( bfile IN DBE_LOB.BFILE, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN RAW; 表18 DBE_LOB.LOB_SUBSTR接口参数说明 参数 说明 lob_loc/bfile 将要读取子串的LOB描述符或BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开),对于BLOB/BFILE类型的返回值是读取的RAW类型,对于CLOB类型的返回值是VARCHAR2类型。 amount 要读取的字节数或者字符数量。 说明: 范围为1~32767,超出返回null。 off_set 从开始位置偏移的字符数或者字节数量。 说明: 范围为1~LOBMAXSIZE,超出返回null。 DBE_LOB.STRIP 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置为newlen参数指定的长度。 DBE_LOB.STRIP函数原型为: 1 2 3 4 5 6 7 DBE_LOB.STRIP( lob_loc INOUT BLOB, newlen IN INTEGER); DBE_LOB.STRIP( lob_loc INOUT CLOB, newlen IN INTEGER); 表19 DBE_LOB.STRIP接口参数说明 参数 说明 lob_loc IN参数为待读入的指定LOB类型对象,OUT参数为截断后的对象,传空报错。 newlen 截断后LOB的新长度,对于BLOB是字节数,对于CLOB是字符数。 DBE_LOB.LOB_STRIP 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置为newlen参数指定的长度。支持LOB大于1GB,最大支持32TB。 DBE_LOB.LOB_STRIP函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOB_STRIP( lob_loc INOUT BLOB, newlen IN BIGINT); DBE_LOB.LOB_STRIP( lob_loc INOUT CLOB, newlen IN BIGINT); 表20 DBE_LOB.LOB_STRIP接口参数说明 参数 说明 lob_loc IN参数为待读入的指定LOB类型对象,OUT参数为截断后的对象,传空报错。 newlen 截断后LOB的新长度,对于BLOB是字节数,对于CLOB是字符数。 说明: 小于1返回null,大于lob的长度,报错。 DBE_LOB.CREATE_TEMPORARY 这个存储过程创建一个临时的BLOB或者CLOB,这个存储过程仅用于语法上的兼容,并无实际意义。 DBE_LOB.CREATE_TEMPORARY函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.CREATE_TEMPORARY ( lob_loc INOUT BLOB, cache IN BOOLEAN, dur IN INTEGER DEFAULT 10); DBE_LOB.CREATE_TEMPORARY ( lob_loc INOUT CLOB, cache IN BOOLEAN, dur IN INTEGER DEFAULT 10); 表21 DBE_LOB.CREATE_TEMPORARY接口参数说明 参数 说明 lob_loc LOB描述符。 cache 仅用于语法上的兼容。 dur 仅用于语法上的兼容。 DBE_LOB.APPEND 存储过程APPEND将source_obj拼接在目标lob之后。 DBE_LOB.APPEND函数原型为: 1 2 3 4 5 6 7 DBE_LOB.APPEND ( blob_obj INOUT BLOB, source_obj IN BLOB); DBE_LOB.APPEND ( clob_obj INOUT CLOB, source_obj IN CLOB); 表22 DBE_LOB.APPEND接口参数说明 参数 说明 blob_obj/clob_obj 要写入的BLOB/CLOB对象。 source_obj 读取的BLOB/CLOB对象。 DBE_LOB.LOB_APPEND 存储过程LOB_APPEND将source_obj拼接在目标lob之后。 DBE_LOB.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOB_APPEND( blob_obj INOUT BLOB, source_obj IN BLOB); DBE_LOB.LOB_APPEND( clob_obj INOUT CLOB, source_obj IN CLOB); 表23 DBE_LOB.LOB_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 要写入的BLOB/CLOB对象。 source_obj 读取的BLOB/CLOB对象。 DBE_LOB.FREETEMPORARY 存储过程用于释放由CREATE_TEMPORARY创建的LOB文件。 DBE_LOB.FREETEMPORARY函数原型为: 1 2 3 4 5 DBE_LOB.FREETEMPORARY ( blob INOUT BLOB); DBE_LOB.FREETEMPORARY ( clob INOUT CLOB); 表24 DBE_LOB.FREETEMPORARY接口参数说明 参数 说明 blob/clob 要释放的BLOB/CLOB对象。 DBE_LOB.FILEOPEN 这个函数用于打开数据库外部BFILE类型文件,并返回这个文件对用的文件描述符(fd),一个会话最多支持打开10个BFILE文件。 BFILE类型定义为: 1 2 3 4 DBE_LOB.BFILE ( directory TEXT, filename TEXT, fd INTEGER); DBE_LOB.FILEOPEN函数原型为: 1 2 3 4 DBE_LOB.FILEOPEN ( bfile IN DBE_LOB.BFILE, open_mode IN TEXT) RETURN INTEGER; 表25 DBE_LOB.FILEOPEN接口参数说明 参数 说明 bfile 要打开的数据库外部文件(BFILE类型包含了文件路径和文件名、文件描述符(fd))。 说明: file变量中包含文件目录的位置directory,文件名filename。 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 文件打开模式,只支持read模式(r),其他模式报错。 DBE_LOB.FILECLOSE 这个函数用于关闭数据外部BFILE类型文件。 DBE_LOB.FILECLOSE函数原型为: 1 2 DBE_LOB.FILECLOSE ( file IN INTEGER); 表26 DBE_LOB.FILECLOSE接口参数说明 参数 说明 file 要关闭的数据库外部文件(由FILEOPEN返回的文件描述符)。 DBE_LOB.BFILEOPEN 这个存储过程用于打开数据库外部BFILE类型文件,一个会话最多支持打开10个BFILE文件。 DBE_LOB.BFILEOPEN原型为: 1 2 3 DBE_LOB.BFILEOPEN ( bfile INOUT DBE_LOB.BFILE, open_mode IN TEXT DEFAULT 'R'); 表27 DBE_LOB.BFILEOPEN接口参数说明 参数 说明 bfile INOUT参数为打开的数据库BFILE文件。 说明: bfile变量中包含文件目录的位置directory,文件名filename。 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 文件打开模式,只支持read模式(r),其他模式报错。 示例 1 2 3 4 5 6 7 8 9 10 --获取bfile文件的子串 DECLARE bfile dbe_lob.bfile; BEGIN bfile = DBE_LOB.BFILENAME(dir_name, file_name); --获取对应bfile文件对象 DBE_LOB.bfileopen(bfile, 'r'); --打开bfile文件 RAISE NOTICE 'res:%', DBE_LOB.lob_substr(bfile, 10, 1); --获取子串,并打印 DBE_LOB.bfileclose(bfile);--关闭bfile文件 END; / DBE_LOB.BFILECLOSE 这个存储过程用于关闭数据库外部BFILE类型文件。 DBE_LOB.BFILECLOSE原型为: 1 2 DBE_LOB.BFILECLOSE ( bfile INOUT DBE_LOB.BFILE); 表28 DBE_LOB.BFILECLOSE接口参数说明 参数 说明 bfile INOUT参数为关闭的数据库BFILE文件。 DBE_LOB.LOADFROMFILE 这个函数用于将BFILE类型外部文件读取到BLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADFROMFILE ( dest_lob IN BLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN RAW; 表29 DBE_LOB.LOADFROMFILE接口参数说明 参数 说明 dest_lob 目标BLOB对象,BFILE文件将读取到这个文件中的指定偏移位置。 src_bfile 需要读取的源BFILE文件。 amount 读取BFILE文件内容的长度。 说明: 长度小于1或者大于32767则报错。 dest_offset BLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.LOADFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到LOB对象中。 DBE_LOB.LOADFROMBFILE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_LOB.LOADFROMBFILE ( dest_lob INOUT BLOB, src_file IN DBE_LOB.BFILE, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1) RETURN BLOB; DBE_LOB.LOADFROMBFILE ( dest_lob INOUT CLOB, src_file IN DBE_LOB.BFILE, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1) RETURN CLOB; 表30 DBE_LOB.LOADFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标LOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的LOB对象,大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件,BFILE文件的大小支持超过1GB,最大支持32TB。 amount 读取BFILE文件内容和写入lob的长度。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset LOB对象的偏移长度 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADBLOBFROMFILE 这个函数用于将BFILE类型外部文件读取到BLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADBLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADBLOBFROMFILE ( dest_lob IN BLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN RAW; 表31 DBE_LOB.LOADBLOBFROMFILE接口参数说明 参数 说明 dest_lob 目标BLOB对象,BFILE文件将读取到这个对象中。 src_file 需要读取的源BFILE文件。 amount BLOB对象的长度,超过这个阈值的文件将不会保存到BLOB中。 说明: 长度小于1或者大于32767则报错。 dest_offset BLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADBLOBFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到BLOB对象中。 DBE_LOB.LOADBLOBFROMBFILE函数原型为: 1 2 3 4 5 6 DBE_LOB.LOADBLOBFROMFILE ( dest_lob INOUT BLOB, src_file IN DEB_LOB.BFILE, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表32 DBE_LOB.LOADBLOBFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标BLOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的BLOB对象。大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件,BFILE文件的大小支持超过1GB,最大支持32TB。 amount BLOB对象的长度,超过这个阈值的文件将不会保存到BLOB中。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset BLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADCLOBFROMFILE 这个函数用于将BFILE类型外部文件读取到CLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADCLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADCLOBFROMFILE ( dest_lob IN CLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN RAW; 表33 DBE_LOB.LOADCLOBFROMFILE接口参数说明 参数 说明 dest_lob 目标CLOB对象,BFILE文件将读取到这个文件中。 src_file 需要读取的源BFILE文件。 amount CLOB对象的长度。 说明: 长度小于1或者大于32767则报错。 dest_offset CLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADCLOBFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到CLOB对象中。 DBE_LOB.LOADCLOBFROMBFILE函数原型为: 1 2 3 4 5 6 DBE_LOB.LOADCLOBFROMBFILE ( dest_lob INOUT CLOB, src_file IN DEB_LOB.BFILE, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表34 DBE_LOB.LOADCLOBFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标CLOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的CLOB对象。大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件。BFILE文件的大小支持超过1GB,最大支持32TB。 amount CLOB对象的长度,超过这个阈值的文件将不会保存到CLOB中。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset CLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.CONVERTTOBLOB 这个函数将clob对象转换成blob对象,不支持大于1GB的场景。 DBE_LOB.CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 DBE_LOB.CONVERTTOBLOB( dest_blob IN BLOB, src_clob IN CLOB, amount IN INTEGER DEFAULT 32767, dest_offset IN INTEGER DEFAULT 1, src_offset IN INTEGER DEFAULT 1) RETURN RAW; 表35 DBE_LOB.CONVERTTOBLOB接口参数说明 参数 说明 dest_blob 目标blob对象,clob转换后的文件。 src_clob 需要读取的源clob对象。 amount clob对象的长度,超过这个阈值的文件将不会保存到blob中。长度小于1或者大于LOBMAXSIZE则报错。 dest_offset blob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。 src_offset clob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。 DBE_LOB.LOB_CONVERTTOBLOB 这个函数将clob对象转换成blob对象,支持LOB大于1GB。 DBE_LOB.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 DBE_LOB.LOB_CONVERTTOBLOB( dest_blob INOUT BLOB, src_clob IN CLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表36 DBE_LOB.LOB_CONVERTTOBLOB接口参数说明 参数 说明 dest_blob 目标blob对象,clob转换后的文件。 src_clob 需要读取的源clob对象。 amount clob对象的长度,超过这个阈值的文件将不会保存到blob中。长度小于1或者大于LOBMAXSIZE则报错。 dest_offset blob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset clob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.CONVERTTOCLOB 这个函数将blob对象转换成clob对象,不支持大于1GB的场景。 DBE_LOB.CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 7 DBE_LOB.CONVERTTOCLOB( dest_clob IN CLOB, src_blob IN BLOB, amount IN INTEGER DEFAULT 32767, dest_offset IN INTEGER DEFAULT 1, src_offset IN INTEGER DEFAULT 1) RETURN text; 表37 DBE_LOB.CONVERTTOCLOB接口参数说明 参数 说明 dest_clob 目标clob对象,blob转换后的文件。 src_blob 需要读取的源blob对象。 amount blob对象的长度,超过这个阈值的文件将不会保存到clob中。 dest_offset clob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。 src_offset blob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。 DBE_LOB.LOB_CONVERTTOCLOB 这个函数将blob对象转换成clob对象,支持LOB大于1G。 DBE_LOB.LOB_CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 DBE_LOB.LOB_CONVERTTOCLOB( dest_clob INOUT CLOB, src_blob IN BLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表38 DBE_LOB.LOB_CONVERTTOCLOB接口参数说明 参数 说明 dest_clob 目标clob对象,blob转换后的文件。 src_blob 需要读取的源blob对象。 amount blob对象的长度,超过这个阈值的文件将不会保存到clob中。 dest_offset clob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset blob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.GETCHUNKSIZE 在数据库存储LOB数据时,内部使用toast存储,本函数返回TOAST_MAX_CHUNK_SIZE。 DBE_LOB.GETCHUNKSIZE的函数原型为: 1 2 3 4 5 6 7 DBE_LOB.GETCHUNKSIZE( lob_loc IN CLOB )RETURN INTEGER DBE_LOB.GETCHUNKSIZE( lob_loc IN BLOB )RETURN INTEGER 表39 DBE_LOB.GETCHUNKSIZE接口参数说明 参数 说明 lob_loc 目标CLOB/BLOB对象。 DBE_LOB.LOB_WRITE 将源对象从起始位置读取指定长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 DBE_LOB.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_LOB.LOB_WRITE( clob_obj INOUT CLOB, amount IN INTEGER, off_set IN BIGINT, source IN VARCHAR2 ) RETURN CLOB; DBE_LOB.LOB_WRITE( blob_obj INOUT BLOB, amount IN INTEGER, off_set IN BIGINT, source IN RAW ) RETURN BLOB; 表40 DBE_LOB.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 blob_obj/clob_obj BLOB/CLOB INOUT 否 IN参数为待写入的目标LOB,OUT参数为写入内容后的LOB。 amount INTEGER IN 否 待写入的长度(BLOB以字节为单位,CLOB以字符为单位)。 off_set BIGINT IN 否 在blob_obj/clob_obj中写入的偏移位置。 source RAW/VARCHAR2 IN 否 源对象。 DBE_LOB.BFILENAME 这个函数用于根据目录和文件名构造BFILE类型对象。 DBE_LOB.BFILENAME原型为: 1 2 3 4 DBE_LOB.BFILENAME( directory IN TEXT, filename IN TEXT) RETURN DBE_LOB.BFILE; 表41 DBE_LOB.BFILENAME接口参数说明 参数 说明 directory 文件目录 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 filename 文件名
  • PRVT_ILM PRVT_ILM接口为ILM特性内部使用,用户无法直接调用,只列举接口名称,不做详细接口原型描述。 接口名称 描述 be_active_ado_window 维护窗口触发动作,刷新ilmadowindow触发时间及动作。 be_create_ado_window_for_each_db 维护窗口触发动作,在实例的每个数据库中创建ilmadowindow。 be_execute_ilm ilmadowind执行动作,进行自动评估。 be_execute_ilm_dn 用于分布式DN上的自动评估。该操作会影响集群整体的ILM后台调度。 flush_task_executestate 自动调度任务刷新task状态。 generate_taskoid CN生成用于本次调度的taskid。 evaluate_obj_policy 触发调度后对数据对象进行评估。 change_be_ilm dbe_ilm_admin.enable_ilm()和disable_ilm()帮助函数。该操作会影响集群整体的ILM后台调度。 get_compression_ratio dbe_compression.get_compression_ratio()帮助函数。 get_compression_type dbe_compression.get_compression_type()帮助函数。 get_lastmodified_time dbe_heat_map.row_heat_map()帮助函数。 ilm_job_action 压缩任务执行体,分布式DN使用。 delete_expired_ilm_log 清理过期日志,分布式使用。 delete_gs_ilm_task 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_jobdetail 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_task 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_taskdetail 操作特性相关系统表,分布式DN使用。 update_gs_ilm_jobdetail 操作特性相关系统表,分布式DN使用。 update_gs_ilm_object 操作特性相关系统表,分布式DN使用。 update_gs_ilm_param 操作特性相关系统表,分布式DN使用。该操作会影响集群整体的ILM后台调度。 update_gs_ilm_task 操作特性相关系统表,分布式DN使用。 gs_ilm_ticker 维护窗口执行动作,执行一次打点,记录lsn与时间的映射关系。 compress_blocks prvt_ilm.ilm_job_action()帮助函数。 compress_block_single 废弃接口,请勿再使用。 get_job_status dbe_ilm.stop_ilm帮助函数。 insert_gs_ilm_param 操作特性相关系统表。 query_unfinishedjob_num 查询是否存在还没有结束的job,包括初始和运行中的状态。 update_gs_ilm_object_flag2 操作特性相关系统表,分布式DN使用。 ilm_seq_nextval 用于获取ilm的下一个sequence值。 ilm_seq_setval 用于设置ilm的当前sequence值。 check_compatibility 用于统一判断数据库兼容性模式的帮助函数。 set_pg_settings 用于设置数据库兼容性模式特性GUC参数的帮助函数。 check_seq 保证gsilmtask_seq当前值大于gs_ilm_task表最大taskoid,分布式CN使用。 父主题: 二次封装接口(推荐)
  • 数据类型介绍 高级包DBE_DESCRIBE内置了两个数据类型,这两个数据类型使用自定义类型创建,用于DESCRIBE_PROCEDURE接口的返回值。 DBE_DESCRIBE.NUMBER_TABLE 该类型是NUMBER的TABLE类型,通过TABLE OF语法实现。 DBE_DESCRIBE.NUMBER_TABLE类型的原型为: 1 CREATE TYPE DBE_DESCRIBE.NUMBER_TABLE AS TABLE OF NUMBER INDEX BY INTEGER; DBE_DESCRIBE.VARCHAR2_TABLE 该类型是VARCHAR2的TABLE类型,通过TABLE OF语法实现。 DBE_DESCRIBE.VARCHAR2_TABLE类型的原型为: 1 CREATE TYPE DBE_DESCRIBE.VARCHAR2_TABLE AS TABLE OF VARCHAR2(30) INDEX BY INTEGER;
  • 接口介绍 高级功能包DBE_XMLDOM用于访问XMLType对象,实现DOM(Document Object Model),用于访问HTML和XML DOCUMENTS API。高级功能包DBE_XMLDOM支持的所有类型请参见表1,DBE_XMLDOM支持的所有接口请参见表2。 DBE_XMLDOM高级包在字符集设置为SQL_ASCII的数据库内使用的情况下,输入超出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变量的各类型节点数量。 DBE_XMLDOM.GETELEMENTSB.... 返回匹配TAGNAME的DOMNODELIST节点列表。
  • 约束说明 使用summit/id_submit创建一个新job后,该job从属于当前coordinator(即:该job仅在当前coordinator上调度和执行),其他coordinator不会调度和执行该job,如果出现coordinator节点故障,无法保证job正常执行。建议使用PKG_SERVICE.SUBMIT_ON_N....接口,将job执行节点指定为CCN,以保证节点故障时job仍然可用。不是所有coordinator都可以查看、修改、删除其他CN创建的job。 job只能通过dbe_task高级包提供的接口进行创建、更新、删除操作,因为高级包的接口中会考虑所有CN间job信息的同步和pg_job与pg_job_proc表主键的关联操作,如果通过DML语句对pg_job表进行增删改,会导致job信息在CN间不一致和系统表无法关联变更的混乱问题,会严重影响job内部的管理。 由于用户创建的每个任务和CN绑定,当任务运行过程中,该CN故障,则该任务的状态无法实时刷新,仍为‘r’状态,需要等CN启动正常后才能刷新为‘s’状态。如果在任务未执行时CN故障,则该CN上的任务都得不到正常的调度和执行,需要人为干预让该CN恢复正常,或进行节点删除/替换,job才能正常的调度和执行。 job在定时执行过程中,需要在当前job所属的CN上实时更新该job的运行状态、最近执行开始时间、最近执行结束时间、下次开始时间、失败次数(如果job执行失败)等相关参数信息到pg_job系统表中,并同步到其他CN,保证job信息的一致性。如果其他CN存在节点故障,那么job所属CN会同步超时重发的操作,导致job执行时间变长,但CN间同步超时失败后,原CN上pg_job表中job的相关信息仍然能正常更新,且job能正常执行成功。当故障CN恢复正常后,可能出现该CN上pg_job表中当前job的执行时间、运行状态等参数与原CN上不一致的情况,需要原CN上再次执行该job后才能保证job信息的同步。 对于并发同时有多个job到达执行时间的场景,由于会为每个job创建一个线程来执行job,由于系统内部启动每个线程的时间会有延迟,因此会导致同时并发执行的job开始时间有延迟,每个job的延迟时间在0.1ms左右。
  • 接口介绍 表1 DBE_STATS接口总览 接口名称 描述 DBE_STATS.LOCK_TABLE_STATS 锁定表级统计信息。 DBE_STATS.LOCK_PARTITION_STATS 锁定分区级统计信息。 DBE_STATS.LOCK_COLUMN_STATS 锁定列级统计信息。 DBE_STATS.LOCK_SCHEMA_STATS 锁定指定schema下所有表相关的统计信息。 DBE_STATS.UNLOCK_TABLE_STATS 解锁表级统计信息。 DBE_STATS.UNLOCK_PARTITION_STATS 解锁分区级统计信息。 DBE_STATS.UNLOCK_COLUMN_STATS 解锁列级统计信息。 DBE_STATS.UNLOCK_SCHEMA_STATS 解锁指定schema下所有表相关的统计信息。 DBE_STATS.RESTORE_TABLE_STATS 回退表级统计信息到指定时间点。 DBE_STATS.RESTORE_PARTITION_STATS 回退分区级统计信息到指定时间点。 DBE_STATS.RESTORE_COLUMN_STATS 回退列级统计信息到指定时间点。 DBE_STATS.RESTORE_SCHEMA_STATS 回退指定schema下所有表相关的统计信息到指定时间点。 DBE_STATS.PURGE_STATS 清除指定时间节点前的所有历史统计信息。 DBE_STATS.GET_STATS_HISTORY_RETENTION 获取历史统计信息的保留时间。 DBE_STATS.GET_STATS_HISTORY_AVAILABILITY 获取最早可用的历史统计信息的时间。 DBE_STATS.CREATE_STAT_TABLE 创建用于保存统计信息的统计表。 DBE_STATS.DROP_STAT_TABLE 删除用于保存统计信息的统计表。 DBE_STATS.EXPORT_INDEX_STATS 检索指定索引的统计信息并存储在用户统计信息表中。 DBE_STATS.EXPORT_TABLE_STATS 检索指定表的统计信息并存储在用户统计信息表中。 DBE_STATS.EXPORT_COLUMN_STATS 检索指定列的统计信息并存储在用户统计信息表中。 DBE_STATS.EXPORT_SCHEMA_STATS 检索指定schema的统计信息并存储在用户统计信息表中。 DBE_STATS.IMPORT_INDEX_STATS 从用户统计信息表中检索指定索引的统计信息,并将其写回系统表。 DBE_STATS.IMPORT_TABLE_STATS 从用户统计信息表中检索指定表的统计信息,并将其写回系统表。 DBE_STATS.IMPORT_COLUMN_STATS 从用户统计信息表中检索指定列的统计信息,并将其写回系统表。 DBE_STATS.IMPORT_SCHEMA_STATS 从用户统计信息表中检索指定schema的统计信息,并将其写回系统表。 DBE_STATS.SET_COLUMN_STATS 设置列相关的统计信息,包括单列、多列、表达式统计信息。 DBE_STATS.SET_INDEX_STATS 设置索引相关的统计信息。 DBE_STATS.SET_TABLE_STATS 设置表相关的统计信息。 DBE_STATS.DELETE_COLUMN_STATS 删除列相关的统计信息,包括单列、多列、表达式统计信息。 DBE_STATS.DELETE_INDEX_STATS 删除索引相关的统计信息。 DBE_STATS.DELETE_TABLE_STATS 删除表相关的统计信息。 DBE_STATS.DELETE_SCHEMA_STATS 删除schema下所有表、索引、列相关的统计信息。
  • 数据类型介绍 高级包DBE_DESCRIBE内置了两个数据类型,这两个数据类型使用自定义类型创建,用于DESCRIBE_PROCEDURE接口的返回值。 DBE_DESCRIBE.NUMBER_TABLE 该类型是NUMBER的TABLE类型,通过TABLE OF语法实现。 DBE_DESCRIBE.NUMBER_TABLE类型的原型为: 1 CREATE TYPE DBE_DESCRIBE.NUMBER_TABLE AS TABLE OF NUMBER INDEX BY INTEGER; DBE_DESCRIBE.VARCHAR2_TABLE 该类型是VARCHAR2的TABLE类型,通过TABLE OF语法实现。 DBE_DESCRIBE.VARCHAR2_TABLE类型的原型为: 1 CREATE TYPE DBE_DESCRIBE.VARCHAR2_TABLE AS TABLE OF VARCHAR2(30) INDEX BY INTEGER;