云服务器内容精选
-
PKG_UTIL PKG_UTIL支持的所有接口请参见表1: 表1 PKG_UTIL 接口名称 描述 PKG_UTIL.LOB_READ 读取lob对象的一部分。 PKG_UTIL.LOB_WRITE 将源对象按照指定格式写入到目标对象。 PKG_UTIL.LOB_APPEND 将lob源对象追加到目标lob对象。 PKG_UTIL.LOB_COMPARE 根据指定长度比较两个lob对象。 PKG_UTIL.LOB_MATCH 返回一个字符串在LOB中第N次出现的位置。 PKG_UTIL.LOB_RESET 将lob的指定位置重置为指定字符。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数将源blob/clob对象读取指定长度内容,并追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE 该函数将源blob/clob对象,从指定偏移读取指定长度内容,写入到目标blob/clob对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格,返回处理后的CLOB以及实际处理的长度。 PKG_UTIL.LOADBLOBFROMFILE 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADCLOBFROMFIL... 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOB_CONVERTTOBL... 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amout为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCL... 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amout为要转换的长度。 PKG_UTIL.LOB_RAWTOTEXT raw类型转成text类型。 PKG_UTIL.BFILE_GET_LENGT... 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 PKG_UTIL.IO_PRINT 将字符串打印输出。 PKG_UTIL.RAW_GET_LENGTH 获取raw的长度。 PKG_UTIL.RAW_CAST_FROM_V... 将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_.... 将binary integer转化为raw。 PKG_UTIL.RAW_CAST_TO_BIN... 将raw转化为binary integer。 PKG_UTIL.RANDOM_SET_SEED 设置随机种子。 PKG_UTIL.RANDOM_GET_VALU... 返回随机值。 PKG_UTIL.FILE_SET_DIRNAM... 设置当前操作的目录。 PKG_UTIL.FILE_OPEN 根据指定文件名和设置的目录打开一个文件。 PKG_UTIL.FILE_SET_MAX_LI... 设置写入文件一行的最大长度。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_READ 从一个打开的文件句柄中读取指定长度的数据。 PKG_UTIL.FILE_REA DLI NE 从一个打开的文件句柄中读取一行数据。 PKG_UTIL.FILE_WRITE 将BUFFER中的数据写入到文件中。 PKG_UTIL.FILE_WRITELINE 将BUFFER写入文件,并追加换行符。 PKG_UTIL.FILE_NEWLINE 新起一行。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据。 PKG_UTIL.FILE_WRITE_RAW 将二进制数据写入到文件中。 PKG_UTIL.FILE_FLUSH 将一个文件句柄中的数据写入到物理文件中。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个物理文件,操作需要有对应权限。 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 PKG_UTIL.FILE_SIZE 返回文件大小。 PKG_UTIL.FILE_BLOCK_SIZE 返回文件含有的块数量。 PKG_UTIL.FILE_EXISTS 判断文件是否存在。 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_SEEK 设置文件位置为指定偏移。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有文件句柄。 PKG_UTIL.EXCEPTION_REPOR... 抛出一个异常。 PKG_UTIL.UTILITY_COMPILE... 重编译指定Schema、函数和存储过程。当编译到的PL/SQL对象遇到报错时,将直接返回,不再继续编译。该PACKAGE已废弃。推荐使用pkg_util.gs_compile_schema。 PKG_UTIL.GS_COMPILE_SCH.... 重编译指定Schema、函数和存储过程。当编译遇到PL/SQL对象报错时,异常将会被捕获,继续编译其它对象,直到全部对象编译成功或者到达尝试次数后停止。 通过jdbc执行该高级包,sqlstate会打印00000错误码,00000错误码代表成功完成,具体请参见《错误码参考》中的“SQL标准错误码说明”。 PKG_UTIL.LOB_GET_LENGTH 该函数LOB_GET_LENGTH获取输入数据的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 8 9 PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB ) RETURN INTEGER; PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB ) RETURN INTEGER; 表2 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待获取长度的对象。 PKG_UTIL.LOB_READ 该函数LOB_READ读取一个对象,并返回指定部分。 PKG_UTIL.LOB_READ函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_READ( lob IN ANYELEMENT, len IN INT, start IN INT, mode IN INT ) RETURN ANYELEMENT; 表3 PKG_UTIL.LOB_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 clob或者blob类型数据。 len INT IN 否 返回结果长度。 start INT IN 否 相较于第一个字符的偏移量。 mode INT IN 否 判断读取操作的类型, 0 :read; 1 : trim; 2 : substr。 PKG_UTIL.LOB_WRITE 该函数LOB_WRITE将源对象按照指定的参数写入目标对象,并返回目标对象。 PKG_UTIL.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PKG_UTIL.LOB_WRITE( dest_lob INOUT BLOB, src_lob IN RAW len IN INT, start_pos IN BIGINT ) RETURN BLOB; PKG_UTIL.LOB_WRITE( dest_lob INOUT CLOB, src_lob IN VARCHAR2 len IN INT, start_pos IN BIGINT ) RETURN CLOB; 表4 PKG_UTIL.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB/BLOB INOUT 否 写入的目标对象。 src_lob CLOB/BLOB IN 否 被写入的源对象。 len INT IN 否 源对象的写入长度。 start_pos BIGINT IN 否 目标对象的写入起始位置。 PKG_UTIL.LOB_APPEND 该函数LOB_APPEND将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_APPEND( dest_lob INOUT BLOB, src_lob IN BLOB, len IN INT DEFAULT NULL ) RETURN BLOB; PKG_UTIL.LOB_APPEND( dest_lob INOUT CLOB, src_lob IN CLOB, len IN INT DEFAULT NULL ) RETURN CLOB; 表5 PKG_UTIL.LOB_APPEND接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB/BLOB INOUT 否 写入的目标blob/clob对象。 src_lob CLOB/BLOB IN 否 被写入的源blob/clob对象。 len INT IN 是 src中读取并append到dest上的长度,默认null,将src全部append上去。 PKG_UTIL.LOB_COMPARE 该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同,lob1大则返回1,lob2大返回-1,相等返回0。 PKG_UTIL.LOB_COMPARE函数原型为: 1 2 3 4 5 6 7 8 PKG_UTIL.LOB_COMPARE( lob1 IN ANYELEMENT, lob2 IN ANYELEMENT, len IN INT DEFAULT 1073741771, start_pos1 IN INT DEFAULT 1, start_pos2 IN INT DEFAULT 1 ) RETURN INTEGER; 表6 PKG_UTIL.LOB_COMPARE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob1 CLOB/BLOB IN 否 待比较的字符串。 lob2 CLOB/BLOB IN 否 待比较的字符串。 len INT IN 否 比较的长度。 start_pos1 INT IN 否 lob1起始偏移量。 start_pos2 INT IN 否 lob2起始偏移量。 PKG_UTIL.LOB_MATCH 该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。 PKG_UTIL.LOB_MATCH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_MATCH( lob IN ANYELEMENT, pattern IN ANYELEMENT, start IN INT, match_nth IN INT DEFAULT 1 ) RETURN INTEGER; 表7 PKG_UTIL.LOB_MATCH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待比较的字符串。 pattern CLOB/BLOB IN 否 待匹配的pattern。 start INT IN 否 lob的起始比较位置。 match_nth INT IN 否 第几次匹配到。 PKG_UTIL.LOB_RESET 该函数LOB_RESET清除一段数据为字符value。 PKG_UTIL.LOB_RESET函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_RESET( lob IN BLOB, len IN INT, start IN INT, value IN INT DEFAULT 0 ) RETURN RECORD; 表8 PKG_UTIL.LOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB IN 否 待重置的字符串。 len INT IN 否 重置的长度。 start INT IN 否 重置的起始位置。 value INT IN 是 设置的字符。默认值‘0’。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB) RETURN BIGINT; PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB) RETURN BIGINT; 表9 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB/CLOB IN 否 指定的LOB类型对象。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_READ_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PKG_UTIL.LOB_READ_HUGE( lob IN CLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( lob IN BLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( fd IN INTEGER, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; 表10 PKG_UTIL.LOB_READ_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob/fd BLOB/CLOB/INTEGER IN 否 指定的LOB类型对象/BFILE文件的文件描述符。 len BIGINT IN 否 读取长度。 start_pos BIGINT IN 否 读取起始偏移位置。 mode INTEGER IN 否 read模式(0代表read、1代表trim、2代表substr)。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数LOB_WRITEAPPEND_HUGE将源blob/clob对象读取指定长度内容,并追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_WRITEAPPEND_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT CLOB, len IN INTEGER, src_lob IN VARCHAR2 )RETURN CLOB; PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT BLOB, len IN INTEGER, src_lob IN RAW )RETURN BLOB; 表11 PKG_UTIL.LOB_WRITEAPPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 len INTEGER IN 是 写入源对象的长度,为NULL则默认写入源对象全部。 src_lob VARCHAR2/RAW IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数LOB_APPEND_HUGE将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE函数原型为: 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT BLOB, src_lob IN BLOB) RETURN BLOB; 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT CLOB, src_lob IN CLOB) RETURN CLOB; 表12 PKG_UTIL.LOB_APPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 src_lob BLOB/CLOB IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数READ_BFILE_TO_BLOB将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB函数原型为: 1 2 3 PKG_UTIL.READ_BFILE_TO_BLOB( fd IN INTEGER )RETURN BLOB; 表13 PKG_UTIL.READ_BFILE_TO_BLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 读取的源BFILE文件。 PKG_UTIL.LOB_COPY_HUGE 该函数LOB_COPY_HUGE将源blob/clob对象,从指定偏移读取指定长度内容,写入到目标blob/clob对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT BLOB, source_obj IN BLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN BLOB; PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT CLOB, source_obj IN CLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN CLOB; 表14 PKG_UTIL.LOB_COPY_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob_obj BLOB/CLOB INOUT 否 目标BLOB/CLOB对象。 source_obj BLOB/CLOB IN 否 源BLOB/CLOB对象。 amount BIGINT IN 否 拷贝的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT IN 否 目标LOB的载入偏移位置。 src_offset BIGINT IN 否 源LOB的读取偏移位置。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.BLOB_RESET函数原型为: 1 2 3 4 5 6 PKG_UTIL.BLOB_RESET( lob INOUT BLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1, value IN INTEGER DEFAULT 0 )RETURN RECORD; 表15 PKG_UTIL.BLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字节。 start INTEGER IN 否 重置的起始位置。 value INTEGER IN 是 设置的字符。默认值‘0’。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格。 PKG_UTIL.CLOB_RESET函数原型为: 1 2 3 4 5 PKG_UTIL.CLOB_RESET( lob INOUT CLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1 )RETURN RECORD; 表16 PKG_UTIL.CLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字符。 start INTEGER IN 否 重置的起始位置,默认为1。 PKG_UTIL.LOADBLOBFROMFILE 该函数LOADBLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADBLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADBLOBFROMFILE( dest_lob INOUT BLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表17 PKG_UTIL.LOADBLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 IN参数为目标BLOB对象,OUT参数为写入后的目标BLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 拷贝的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOADCLOBFROMFILE 该函数LOADCLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADCLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADCLOBFROMFILE( dest_lob INOUT CLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表18 PKG_UTIL.LOADCLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 IN参数为目标CLOB对象,OUT参数为写入后的目标CLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 拷贝的长度(CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amout为要转换的长度。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE( dest_lob INOUT BLOB, src_clob IN CLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表19 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 目标lob。 src_clob CLOB IN 否 要转换的clob。 amount BIGINT IN 否 转换的长度,字符为单位。 dest_offset BIGINT INOUT 否 IN参数为目标lob的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源clob的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amout为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE( dest_lob INOUT CLOB, src_blob IN BLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表20 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 目标lob。 src_blob BLOB IN 否 要转换的blob。 amount BIGINT IN 否 转换的长度,字节为单位。 dest_offset BIGINT INOUT 否 IN参数为目标lob的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源clob的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.LOB_RAWTOTEXT 将RAW转成TEXT。 PKG_UTIL.LOB_RAWTOTEXT函数原型为: 1 2 3 4 PKG_UTIL.LOB_RAWTOTEXT( src_lob IN BLOB ) RETURN TEXT 表21 PKG_UTIL.LOB_RAWTOTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob BLOB IN 否 要转换的lob数据。 PKG_UTIL.BFILE_GET_LENGTH 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_GET_LENGTH函数原型为: 1 2 3 PKG_UTIL.BFILE_GET_LENGTH( fd INTEGER )RETURN BIGINT; 表22 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_OPEN函数原型为: 1 2 3 4 PKG_UTIL.BFILE_OPEN( file_name TEXT, open_mode TEXT) RETURN INTEGER; 表23 PKG_UTIL.BFILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 指定的BFILE文件的文件name。 open_mode TEXT IN 否 打开方式(只支持‘r’,read功能) PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.BFILE_CLOSE函数原型为: 1 2 3 PKG_UTIL.BFILE_CLOSE( fd INTEGER) RETURN BOOL; 表24 PKG_UTIL.BFILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 PKG_UTIL.LOB_WRITE_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT BLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN RAW )RETURN BLOB; PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT CLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN VARCHAR2 )RETURN CLOB; 表25 PKG_UTIL.LOB_WRITE_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 IN参数为待写入的目标LOB,OUT参数为写入内容后的LOB。 len INTEGER IN 否 待写入的长度(BLOB以字节为单位,CLOB以字符为单位)。 start_pos BIGINT IN 否 在dest_lob中写入的偏移位置。 src_lob RAW/VARCHAR2 IN 否 源LOB对象。 PKG_UTIL.IO_PRINT 该函数IO_PRINT将一段字符串打印输出。 PKG_UTIL.IO_PRINT函数原型为: 1 2 3 4 5 PKG_UTIL.IO_PRINT( format IN TEXT, is_one_line IN BOOLEAN ) RETURN VOID; 表26 PKG_UTIL.IO_PRINT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 format TEXT IN 否 待打印输出的字符串。 is_one_line BOOLEAN IN 否 是否输出为一行。 PKG_UTIL.RAW_GET_LENGTH 该函数RAW_GET_LENGTH获取raw的长度。 PKG_UTIL.RAW_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.RAW_GET_LENGTH( value IN RAW ) RETURN INTEGER; 表27 PKG_UTIL.RAW_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 raw RAW IN 否 待获取长度的对象。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 该函数RAW_CAST_FROM_VARCHAR2将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_FROM_VARCHAR2( str IN VARCHAR2 ) RETURN RAW; 表28 PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str VARCHAR2 IN 否 需要转化的源数据。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER( value IN BIGINT, endianess IN INTEGER ) RETURN RAW; 表29 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value BIGINT IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER( value IN RAW, endianess IN INTEGER ) RETURN INTEGER; 表30 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value RAW IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RANDOM_SET_SEED 该函数RANDOM_SET_SEED设置随机数种子。 PKG_UTIL.RANDOM_SET_SEED函数原型为: 1 2 3 4 PKG_UTIL.RANDOM_SET_SEED( seed IN INT ) RETURN INTEGER; 表31 PKG_UTIL.RANDOM_SET_SEED接口参数说明 参数 类型 入参/出参 是否可以为空 描述 seed INT IN 否 随机数种子。 PKG_UTIL.RANDOM_GET_VALUE 该函数RANDOM_GET_VALUE返回0~1区间的一个随机数,其有效数字为15位。 PKG_UTIL.RANDOM_GET_VALUE函数原型为: 1 2 3 PKG_UTIL.RANDOM_GET_VALUE( ) RETURN NUMERIC; PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录,基本上所有涉及单个目录的操作,都需要调用此方法先设置操作的目录。 PKG_UTIL.FILE_SET_DIRNAME函数原型为: 1 2 3 4 PKG_UTIL.FILE_SET_DIRNAME( dir IN TEXT ) RETURN BOOL 表32 PKG_UTIL.FILE_SET_DIRNAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dirname TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误, 下面的涉及location作为参数的函数也是同样的情况。 PKG_UTIL.FILE_OPEN 该函数用来打开一个文件,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 PKG_UTIL.FILE_OPEN函数原型为: 1 2 3 PKG_UTIL.FILE_OPEN( file_name IN TEXT, open_mode IN INTEGER) 表33 PKG_UTIL.FILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode INTEGER IN 否 指定文件的打开模式,包含r:read text,w: write text和a: append text。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为: 1 2 3 PKG_UTIL.FILE_SET_MAX_LINE_SIZE( max_line_size IN INTEGER) RETURN BOOL; 表34 PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 max_line_size INTEGER IN 是 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_IS_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_IS_CLOSE( file IN INTEGER ) RETURN BOOL; 表35 PKG_UTIL.FILE_IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_READ 根据指定的长度从一个打开的文件句柄中读取出数据。 PKG_UTIL.FILE_READ函数原型为: 1 2 3 4 PKG_UTIL.FILE_READ( file IN INTEGER, buffer OUT TEXT, len IN BIGINT DEFAULT 1024) 表36 PKG_UTIL.FILE_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 用于接收数据的BUFFER。 len BIGINT IN 否 从文件中读取的字节数。 PKG_UTIL.FILE_READLINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 PKG_UTIL.FILE_READLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_READLINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) 表37 PKG_UTIL.FILE_READLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 用于接收数据的BUFFER。 len INTEGER IN 是 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_line_size来指定大小。 PKG_UTIL.FILE_WRITE 将BUFFER中指定的数据写入到文件中。 PKG_UTIL.FILE_WRITE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL; 表38 PKG_UTIL.FILE_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_NEWLINE 向一个打开的文件中写入一个行终结符。行终结符和平台相关。 PKG_UTIL.FILE_NEWLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_NEWLINE( file IN INTEGER ) RETURN BOOL; 表39 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_WRITELINE 向一个打开的文件中写入一行。 PKG_UTIL.FILE_WRITELINE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITELINE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL; 表40 PKG_UTIL.FILE_WRITELINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入的内容 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据,返回读取的二进制数据,返回类型为raw。 PKG_UTIL.FILE_READ_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_READ_RAW( file IN INTEGER, length IN INTEGER DEFAULT NULL ) RETURN RAW; 表41 PKG_UTIL.FILE_READ_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 length INTEGER IN 是 要读取的长度,默认为NULL。默认情况下读取文件中所有数据,最大为1G。 PKG_UTIL.FILE_WRITE_RAW 向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。 PKG_UTIL.FILE_WRITE_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE_RAW( file IN INTEGER, r IN RAW ) RETURN BOOL; 表42 PKG_UTIL.FILE_WRITE_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 r RAW IN 否 准备传入文件的数据 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 PKG_UTIL.FILE_FLUSH函数原型为: 1 2 3 4 PKG_UTIL.FILE_FLUSH( file IN INTEGER ) RETURN VOID; 表43 PKG_UTIL.FILE_FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_CLOSE( file IN INTEGER ) RETURN BOOL; 表44 PKG_UTIL.FILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个磁盘文件,操作的时候需要有充分的权限。 PKG_UTIL.FILE_REMOVE函数原型为: 1 2 3 4 PKG_UTIL.FILE_REMOVE( file_name IN TEXT ) RETURN VOID; 表45 PKG_UTIL.FILE_REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 filen_ame TEXT IN 否 要删除的文件名 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 PKG_UTIL.FILE_RENAME函数原型为: 1 2 3 4 5 6 PKG_UTIL.FILE_RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite BOOLEAN DEFAULT FALSE) 表46 PKG_UTIL.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 是 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 PKG_UTIL.FILE_SIZE 返回指定的文件大小。 PKG_UTIL.FILE_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_SIZE( file_name IN TEXT )RETURN BIGINT; 表47 PKG_UTIL.FILE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_BLOCK_SIZE 返回指定的文件含有的块数量。 PKG_UTIL.FILE_BLOCK_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_BLOCK_SIZE( file_name IN TEXT )RETURN BIGINT; 表48 PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_EXISTS 判断指定的文件是否存在。 PKG_UTIL.FILE_EXISTS函数原型为: 1 2 3 4 PKG_UTIL.FILE_EXISTS( file_name IN TEXT ) RETURN BOOL; 表49 PKG_UTIL.FILE_EXISTS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_GETPOS函数原型为: 1 2 3 4 PKG_UTIL.FILE_GETPOS( file IN INTEGER ) RETURN BIGINT; 表50 PKG_UTIL.FILE_GETPOS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 PKG_UTIL.FILE_SEEK函数原型为: 1 2 3 4 5 void PKG_UTIL.FILE_SEEK( file IN INTEGER, start IN BIGINT ) RETURN VOID; 表51 PKG_UTIL.FILE_SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 start BIGINT IN 否 文件偏移,字节。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 PKG_UTIL.FILE_CLOSE_ALL函数原型为: PKG_UTIL.FILE_CLOSE_ALL( ) RETURN VOID; 表52 PKG_UTIL.FILE_CLOSE_ALL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 无 无 无 无 无 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为: 1 2 3 4 5 6 PKG_UTIL.EXCEPTION_REPORT_ERROR( code INTEGER, log TEXT, flag BOOLEAN DEFAULT FALSE ) RETURN INTEGER; 表53 PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 code INTEGER IN 否 抛异常所打印的错误码。 log TEXT IN 否 抛异常所打印的日志提示信息。 flag BOOLEAN IN 是 保留字段,默认为false。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息 PKG_UTIL.APP_READ_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_READ_CLIENT_INFO( OUT buffer TEXT )RETURN TEXT; 表54 PKG_UTIL.APP_READ_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 否 返回的client_info信息 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息 PKG_UTIL.APP_SET_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_SET_CLIENT_INFO( str TEXT ) 表55 PKG_UTIL.APP_SET_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str TEXT IN 否 要设置的client_info信息 PKG_UTIL.LOB_CONVERTTOBLOB 将clob转成blob,amout为要转换的长度 PKG_UTIL.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB( dest_lob BLOB, src_clob CLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )RETURN RAW; 表56 PKG_UTIL.LOB_CONVERTTOBLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB IN 否 目标lob src_clob CLOB IN 否 要转换的clob amount INTEGER IN 否 转换的长度 dest_offset INTEGER IN 否 目标lob的起始位置 src_offset INTEGER IN 否 源clob的起始位置 PKG_UTIL.lLOB_CONVERTTOCLOB 将blob转成clob,amout为要转换的长度 PKG_UTIL.lLOB_CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.lLOB_CONVERTTOCLOB( dest_lob CLOB, src_blob BLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )RETURN TEXT; 表57 PKG_UTIL.lob_converttoclob接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB IN 否 目标lob src_blob BLOB IN 否 要转换的blob amount INTEGER IN 否 转换的长度 dest_offset INTEGER IN 否 目标lob的起始位置 src_offset INTEGER IN 否 源clob的起始位置 PKG_UTIL.LOB_TEXTTORAW 将text转成raw PKG_UTIL.LOB_TEXTTORAW函数原型为: 1 2 3 4 PKG_UTIL.LOB_TEXTTORAW( src_lob CLOB ) RETURN RAW; 表58 PKG_UTIL.LOB_TEXTTORAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob CLOB IN 否 要转换的lob数据 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差别 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY函数原型为: 1 2 3 4 5 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY( str1 TEXT, str2 TEXT ) RETURN INTEGER; 表59 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str1 TEXT IN 否 第一个字符串 str2 TEXT IN 否 第二个字符串 PKG_UTIL.RAW_CAST_TO_VARCHAR2 raw类型转成varchar2。 PKG_UTIL.RAW_CAST_TO_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_TO_VARCHAR2( str RAW ) RETURN VARCHAR2; 表60 PKG_UTIL.RAW_CAST_TO_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str RAW IN 否 十六进制字符串 PKG_UTIL.SESSION_CLEAR_CONTEXT 清除session_context信息 PKG_UTIL.SESSION_CLEAR_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_CLEAR_CONTEXT( namespace TEXT, client_identifier TEXT, attribute TEXT ) RETURN INTEGER; 表61 PKG_UTIL.SESSION_CLEAR_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 client_identifier TEXT IN 是 client_identifier,一般与namespace即可,当为null时,默认修改所有namesapce attribute TEXT IN 否 要清除的属性值 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找属性值 PKG_UTIL.SESSION_SEARCH_CONTEXT函数原型为: 1 2 3 4 5 PKG_UTIL.SESSION_SEARCH_CONTEXT( namespace TEXT, attribute TEXT ) RETURN INTEGER; 表62 PKG_UTIL.SESSION_SEARCH_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 attribute TEXT IN 否 要查找的属性值 PKG_UTIL.SESSION_SET_CONTEXT 设置属性值 PKG_UTIL.SESSION_SET_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_SET_CONTEXT( namespace TEXT, attribute TEXT, value TEXT ) RETURN INTEGER; 表63 PKG_UTIL.SESSION_SET_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 attribute TEXT IN 否 要设置的属性 value TEXT IN 否 属性对应的值 PKG_UTIL.UTILITY_COMPILE_SCHEMA 重编译指定schema中的包函数和存储过程。 PKG_UTIL.UTILITY_COMPILE_SCHEMA函数原型为: PKG_UTIL.UTILITY_COMPILE_SCHEMA ( schema IN VARCHAR2, compile_all IN BOOLEAN DEFAULT TRUE, reuse_settings IN BOOLEAN DEFAULT FALSE ) RETURNS VOID PKG_UTIL.GS_COMPILE_SCHEMA 重编译指定schema中的包函数和存储过程。 PKG_UTIL.GS_COMPILE_SCHEMA存储过程原型为: pkg_util.GS_COMPILE_SCHEMA ( schema_name IN VARCHAR2 DEFAULT NULL, compile_all IN BOOLEAN DEFAULT FALSE, retry_times IN INT DEFAULT 10 ) 表64 PKG_UTIL.GS_COMPILE_SCHEMA接口参数说明 参数 类型 入参/出参 是否可以为空 描述 schema_name VARCHAR2 IN 是 命名空间的名称。 compile_all BOOLEAN IN 是 编译所有。 false:编译pg_object表中状态为false的包、函数、存储过程。 true:编译pg_object表中所有的包、函数、存储过程。 retry_times:重试次数。 PKG_UTIL.UTILITY_GET_TIME 打印unix时间戳。 PKG_UTIL.UTILITY_GET_TIME函数原型为: 1 2 PKG_UTIL.UTILITY_GET_TIME() RETURN BIGINT; PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE() RETURN TEXT; PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK() RETURN TEXT; PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程调用堆栈。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_CALL_STACK() RETURN TEXT; 父主题: 基础接口
-
示例 -- 删除schema drop schema if exists pkg_var_test cascade; -- 创建pkg_var_test create schema pkg_var_test; -- 设置shchema和参数 set current_schema = pkg_var_test; set behavior_compat_options ='plpgsql_dependency'; -- 创建包 create or replace package test_pkg as referenced_var int; unreferenced_var int; end test_pkg; / -- 创建函数 create or replace function test_func return int is begin return 1; end; / -- 创建存储过程 create or replace procedure test_proc is proc_var int; begin proc_var := 1; end; / -- 重编译pkg_var_test下的包 函数和存储过程 call pkg_util.utility_compile_schema('pkg_var_test'); 或者 call pkg_util.gs_compile_schema(' ',false,2); -- 删掉pkg_var_test drop schema if exists pkg_var_test cascade;
-
PKG_UTIL PKG_UTIL支持的所有接口请参见表1: 表1 PKG_UTIL 接口名称 描述 PKG_UTIL.LOB_GET_LENGTH 获取lob的长度。 PKG_UTIL.LOB_READ 读取lob对象的一部分。 PKG_UTIL.LOB_WRITE 将源对象按照指定格式写入到目标对象。 PKG_UTIL.LOB_APPEND 将lob源对象追加到目标lob对象。 PKG_UTIL.LOB_COMPARE 根据指定长度比较两个lob对象。 PKG_UTIL.LOB_MATCH 返回一个字符串在LOB中第N次出现的位置。 PKG_UTIL.LOB_RESET 将lob的指定位置重置为指定字符。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数将源blob/clob对象读取指定长度内容,并追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE 该函数将源blob/clob对象,从指定偏移读取指定长度内容,写入到目标blob/clob对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格,返回处理后的CLOB以及实际处理的长度。 PKG_UTIL.LOADBLOBFROMFILE 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADCLOBFROMFILE 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.BFILE_GET_LENGTH 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原内容, 并返回目标LOB对象。 PKG_UTIL.IO_PRINT 将字符串打印输出。 PKG_UTIL.RAW_GET_LENGTH 获取raw的长度。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_.... 将binary integer转化为raw。 PKG_UTIL.RAW_CAST_TO_BI.... 将raw转化为binary integer。 PKG_UTIL.RANDOM_SET_SEED 设置随机种子。 PKG_UTIL.RANDOM_GET_VALUE 返回随机值。 PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录。 PKG_UTIL.FILE_OPEN 根据指定文件名和设置的目录打开一个文件。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_READ 从一个打开的文件句柄中读取指定长度的数据。 PKG_UTIL.FILE_READLINE 从一个打开的文件句柄中读取一行数据。 PKG_UTIL.FILE_WRITE 将buffer中的数据写入到文件中。 PKG_UTIL.FILE_WRITELINE 将buffer写入文件,并追加换行符。 PKG_UTIL.FILE_NEWLINE 新起一行。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据。 PKG_UTIL.FILE_WRITE_RAW 将二进制数据写入到文件中。 PKG_UTIL.FILE_FLUSH 将一个文件句柄中的数据写入到物理文件中。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个物理文件,操作需要有对应权限。 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似UNIX的mv。 PKG_UTIL.FILE_SIZE 返回文件大小。 PKG_UTIL.FILE_BLOCK_SIZE 返回文件含有的块数量。 PKG_UTIL.FILE_EXISTS 判断文件是否存在。 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_SEEK 设置文件位置为指定偏移。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有文件句柄。 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.LOB_RAWTOTEXT RAW类型转成TEXT类型。 PKG_UTIL.UTILITY_COMPILE_SCHEMA 重编译指定Schema、PACKAGE、函数和存储过程。当编译到的PL/SQL对象遇到报错时,将直接返回,不再继续编译。该PACKAGE已废弃。推荐使用pkg_util.gs_compile_schema。 PKG_UTIL.GS_COMPILE_SCHEMA 重编译指定Schema、PACKAGE、函数和存储过程。当编译遇到PL/SQL对象报错时,异常将会被捕获,继续编译其它对象,直到全部对象编译成功或者到达尝试次数后停止。通过jdbc执行该高级包,sqlstate会打印00000错误码,00000错误码代表成功完成,错误码说明请参见《错误码参考》文档中的“SQL标准错误码说明”。 PKG_UTIL.APP_SET_MODULE 设置module的值。 PKG_UTIL.APP_READ_MODULE 读取module的值。 PKG_UTIL.APP_SET_ACTION 设置action的值。 PKG_UTIL.APP_READ_ACTION 读取action的值。 PKG_UTIL.MODIFY_PACKAGE_STATE 用于修改当前会话的PL/SQL的状态。 PKG_UTIL.LOB_GET_LENGTH 该函数LOB_GET_LENGTH获取输入数据的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 8 9 PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB ) RETURN INTEGER; PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB ) RETURN INTEGER; 表2 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待获取长度的对象。 PKG_UTIL.LOB_READ 该函数LOB_READ读取一个对象,并返回指定部分。 PKG_UTIL.LOB_READ函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_READ( lob IN ANYELEMENT, len IN INT, start IN INT, mode IN INT ) RETURN ANYELEMENT 表3 PKG_UTIL.LOB_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 CLOB或者BLOB类型数据。 len INT IN 否 返回结果长度。 start INT IN 否 相较于第一个字符的偏移量。 mode INT IN 否 判断读取操作的类型, 0 :read; 1 : trim; 2 : substr。 PKG_UTIL.LOB_WRITE 该函数LOB_WRITE将源对象按照指定的参数写入目标对象,并返回目标对象。 PKG_UTIL.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PKG_UTIL.LOB_WRITE( dest_lob INOUT BLOB, src_lob IN RAW len IN INT, start_pos IN BIGINT ) RETURN BLOB; PKG_UTIL.LOB_WRITE( dest_lob INOUT CLOB, src_lob IN VARCHAR2 len IN INT, start_pos IN BIGINT ) RETURN CLOB; 表4 PKG_UTIL.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB/BLOB INOUT 否 写入的目标对象。 src_lob CLOB/BLOB IN 否 被写入的源对象。 len INT IN 否 源对象的写入长度。 start_pos BIGINT IN 否 目标对象的写入起始位置。 PKG_UTIL.LOB_APPEND 该函数LOB_APPEND将源BLOB/CLOB对象追加到目标BLOB/CLOB对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_APPEND( dest_lob INOUT BLOB, src_lob IN BLOB, len IN INT DEFAULT NULL ) RETURN BLOB; PKG_UTIL.LOB_APPEND( dest_lob INOUT CLOB, src_lob IN CLOB, len IN INT DEFAULT NULL ) RETURN CLOB; 表5 PKG_UTIL.LOB_APPEND接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 src_lob BLOB/CLOB IN 否 被写入的源BLOB/CLOB对象。 len INT IN 是 src中读取并append到dest上的长度,默认NULL,将src全部append上去。 PKG_UTIL.LOB_COMPARE 该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同,lob1大则返回1,lob2大返回-1,相等返回0。 PKG_UTIL.LOB_COMPARE函数原型为: 1 2 3 4 5 6 7 8 PKG_UTIL.LOB_COMPARE( lob1 IN ANYELEMENT, lob2 IN ANYELEMENT, len IN INT DEFAULT 1073741771, start_pos1 IN INT DEFAULT 1, start_pos2 IN INT DEFAULT 1 ) RETURN INTEGER; 表6 PKG_UTIL.LOB_COMPARE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob1 CLOB/BLOB IN 否 待比较的字符串。 lob2 CLOB/BLOB IN 否 待比较的字符串。 len INT IN 否 比较的长度。 start_pos1 INT IN 否 lob1起始偏移量。 start_pos2 INT IN 否 lob2起始偏移量。 PKG_UTIL.LOB_MATCH 该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。 PKG_UTIL.LOB_MATCH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_MATCH( lob IN ANYELEMENT, pattern IN ANYELEMENT, start IN INT, match_nth IN INT DEFAULT 1 ) RETURN INTEGER; 表7 PKG_UTIL.LOB_MATCH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待比较的字符串。 pattern CLOB/BLOB IN 否 待匹配的pattern。 start INT IN 否 lob的起始比较位置。 match_nth INT IN 否 第几次匹配到。 PKG_UTIL.LOB_RESET 该函数LOB_RESET清除一段数据为字符value。 PKG_UTIL.LOB_RESET函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_RESET( lob IN BLOB, len IN INT, start IN INT, value IN INT DEFAULT 0 ) RETURN RECORD; 表8 PKG_UTIL.LOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB IN 否 待重置的字符串。 len INT IN 否 重置的长度。 start INT IN 否 重置的起始位置。 value INT IN 是 设置的字符。默认值‘0’。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB) RETURN BIGINT; PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB) RETURN BIGINT; 表9 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB/CLOB IN 否 指定的LOB类型对象。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_READ_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PKG_UTIL.LOB_READ_HUGE( lob IN CLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( lob IN BLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( fd IN INTEGER, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; 表10 PKG_UTIL.LOB_READ_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob/fd BLOB/CLOB/INTEGER IN 否 指定的LOB类型对象/BFILE文件的文件描述符。 len BIGINT IN 否 读取长度。 start_pos BIGINT IN 否 读取起始偏移位置。 mode INTEGER IN 否 read模式(0代表read、1代表trim、2代表substr)。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数LOB_WRITEAPPEND_HUGE将源BLOB/CLOB对象读取指定长度内容,并追加到目标BLOB/CLOB对象, 并返回目标对象。 PKG_UTIL.LOB_WRITEAPPEND_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT CLOB, len IN INTEGER, src_lob IN VARCHAR2 )RETURN CLOB; PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT BLOB, len IN INTEGER, src_lob IN RAW )RETURN BLOB; 表11 PKG_UTIL.LOB_WRITEAPPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 len INTEGER IN 是 写入源对象的长度,为NULL则默认写入源对象全部。 src_lob VARCHAR2/RAW IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数LOB_APPEND_HUGE将源BLOB/CLOB对象追加到目标BLOB/CLOB对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE函数原型为: 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT BLOB, src_lob IN BLOB) RETURN BLOB; 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT CLOB, src_lob IN CLOB) RETURN CLOB; 表12 PKG_UTIL.LOB_APPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 src_lob BLOB/CLOB IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数READ_BFILE_TO_BLOB将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB函数原型为: 1 2 3 PKG_UTIL.READ_BFILE_TO_BLOB( fd IN INTEGER )RETURN BLOB; 表13 PKG_UTIL.READ_BFILE_TO_BLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 读取的源BFILE文件。 PKG_UTIL.LOB_COPY_HUGE 该函数LOB_COPY_HUGE将源BLOB/CLOB对象,从指定偏移读取指定长度内容,写入到目标BLOB/CLOB对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT BLOB, source_obj IN BLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN BLOB; PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT CLOB, source_obj IN CLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN CLOB; 表14 PKG_UTIL.LOB_COPY_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob_obj BLOB/CLOB INOUT 否 目标BLOB/CLOB对象。 source_obj BLOB/CLOB IN 否 源BLOB/CLOB对象。 amount BIGINT IN 否 复制的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT IN 否 目标LOB的载入偏移位置。 src_offset BIGINT IN 否 源LOB的读取偏移位置。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.BLOB_RESET函数原型为: 1 2 3 4 5 6 PKG_UTIL.BLOB_RESET( lob INOUT BLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1, value IN INTEGER DEFAULT 0 )RETURN RECORD; 表15 PKG_UTIL.BLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字节。 start INTEGER IN 否 重置的起始位置。 value INTEGER IN 是 设置的字符。默认值‘0’。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格。 PKG_UTIL.CLOB_RESET函数原型为: 1 2 3 4 5 PKG_UTIL.CLOB_RESET( lob INOUT CLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1 )RETURN RECORD; 表16 PKG_UTIL.CLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字符。 start INTEGER IN 否 重置的起始位置,默认为1。 PKG_UTIL.LOADBLOBFROMFILE 该函数LOADBLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象、读取位置和写入位置。 PKG_UTIL.LOADBLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADBLOBFROMFILE( dest_lob INOUT BLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表17 PKG_UTIL.LOADBLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 IN参数为目标BLOB对象,OUT参数为写入后的目标BLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 复制的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOADCLOBFROMFILE 该函数LOADCLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADCLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADCLOBFROMFILE( dest_lob INOUT CLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表18 PKG_UTIL.LOADCLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 IN参数为目标CLOB对象,OUT参数为写入后的目标CLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 复制的长度(CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE( dest_lob INOUT BLOB, src_clob IN CLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表19 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 目标LOB。 src_clob CLOB IN 否 要转换的CLOB。 amount BIGINT IN 否 转换的长度,字符为单位。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源CLOB的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE( dest_lob INOUT CLOB, src_blob IN BLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表20 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 目标LOB。 src_blob BLOB IN 否 要转换的BLOB。 amount BIGINT IN 否 转换的长度,字节为单位。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源CLOB的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.BFILE_GET_LENGTH 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_GET_LENGTH函数原型为: 1 2 3 PKG_UTIL.BFILE_GET_LENGTH( fd INTEGER )RETURN BIGINT; 表21 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_OPEN函数原型为: 1 2 3 4 PKG_UTIL.BFILE_OPEN( file_name TEXT, open_mode TEXT) RETURN INTEGER; 表22 PKG_UTIL.BFILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 指定的BFILE文件的文件name。 open_mode TEXT IN 否 打开方式(只支持‘r’,read功能) PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.BFILE_CLOSE函数原型为: 1 2 3 PKG_UTIL.BFILE_CLOSE( fd INTEGER) RETURN BOOL; 表23 PKG_UTIL.BFILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原内容, 并返回目标LOB对象。 PKG_UTIL.LOB_WRITE_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT BLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN RAW )RETURN BLOB; PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT CLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN VARCHAR2 )RETURN CLOB; 表24 PKG_UTIL.LOB_WRITE_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 IN参数为待写入的目标LOB,OUT参数为写入内容后的LOB。 len INTEGER IN 否 待写入的长度(BLOB以字节为单位,CLOB以字符为单位)。 start_pos BIGINT IN 否 在dest_lob中写入的偏移位置。 src_lob RAW/VARCHAR2 IN 否 源LOB对象。 PKG_UTIL.IO_PRINT 该函数IO_PRINT将一段字符串打印输出。 PKG_UTIL.IO_PRINT函数原型为: 1 2 3 4 5 PKG_UTIL.IO_PRINT( format IN TEXT, is_one_line IN BOOLEAN ) RETURN VOID; 表25 PKG_UTIL.IO_PRINT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 format TEXT IN 否 待打印输出的字符串。 is_one_line BOOLEAN IN 否 是否输出为一行。 PKG_UTIL.RAW_GET_LENGTH 该函数RAW_GET_LENGTH获取raw的长度。 PKG_UTIL.RAW_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.RAW_GET_LENGTH( value IN RAW ) RETURN INTEGER; 表26 PKG_UTIL.RAW_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 raw RAW IN 否 待获取长度的对象。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 该函数RAW_CAST_FROM_VARCHAR2将VARCHAR2转化为RAW。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_FROM_VARCHAR2( str IN VARCHAR2 ) RETURN RAW; 表27 PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str VARCHAR2 IN 否 需要转化的源数据。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER( value IN BIGINT, endianess IN INTEGER ) RETURN RAW; 表28 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value BIGINT IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER( value IN RAW, endianess IN INTEGER ) RETURN INTEGER; 表29 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value RAW IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RANDOM_SET_SEED 该函数RANDOM_SET_SEED设置随机数种子。 PKG_UTIL.RANDOM_SET_SEED函数原型为: 1 2 3 4 PKG_UTIL.RANDOM_SET_SEED( seed IN INT ) RETURN INTEGER; 表30 PKG_UTIL.RANDOM_SET_SEED接口参数说明 参数 类型 入参/出参 是否可以为空 描述 seed INT IN 否 随机数种子。 PKG_UTIL.RANDOM_GET_VALUE 该函数RANDOM_GET_VALUE返回0~1区间的一个随机数,其有效数字为15位。 PKG_UTIL.RANDOM_GET_VALUE函数原型为: 1 2 3 PKG_UTIL.RANDOM_GET_VALUE( ) RETURN NUMERIC; PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录,基本上所有涉及单个目录的操作,都需要调用此方法先设置操作的目录。 PKG_UTIL.FILE_SET_DIRNAME函数原型为: 1 2 3 4 PKG_UTIL.FILE_SET_DIRNAME( dir IN TEXT ) RETURN BOOL 表31 PKG_UTIL.FILE_SET_DIRNAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 PKG_UTIL.FILE_OPEN 该函数用来打开一个文件,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 PKG_UTIL.FILE_OPEN函数原型为: 1 2 3 PKG_UTIL.FILE_OPEN( file_name IN TEXT, open_mode IN INTEGER) 表32 PKG_UTIL.FILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在UNIX系统中,文件名不能以/.结尾。 open_mode INTEGER IN 否 指定文件的打开模式,包含r:read text,w: write text和a: append text。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为: 1 2 3 PKG_UTIL.FILE_SET_MAX_LINE_SIZE( max_line_size IN INTEGER) RETURN BOOL 表33 PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 max_line_size INTEGER IN 是 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_IS_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_IS_CLOSE( file IN INTEGER ) RETURN BOOL 表34 PKG_UTIL.FILE_IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_READ 根据指定的长度从一个打开的文件句柄中读取出数据。 PKG_UTIL.FILE_READ函数原型为: 1 2 3 4 PKG_UTIL.FILE_READ( file IN INTEGER, buffer OUT TEXT, len IN BIGINT DEFAULT 1024) 表35 PKG_UTIL.FILE_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 用于接收数据的BUFFER。 len BIGINT IN 否 从文件中读取的字节数。 PKG_UTIL.FILE_READLINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 PKG_UTIL.FILE_READLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_READLINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) 表36 PKG_UTIL.FILE_READLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 用于接收数据的BUFFER。 len INTEGER IN 是 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_line_size来指定大小。 PKG_UTIL.FILE_WRITE 将BUFFER中指定的数据写入到文件中。 PKG_UTIL.FILE_WRITE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL 表37 PKG_UTIL.FILE_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_NEWLINE 向一个打开的文件中写入一个行终结符。行终结符和平台相关。 PKG_UTIL.FILE_NEWLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_NEWLINE( file IN INTEGER ) RETURN BOOL 表38 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_WRITELINE 向一个打开的文件中写入一行。 PKG_UTIL.FILE_WRITELINE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITELINE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL 表39 PKG_UTIL.FILE_WRITELINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入的内容 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据,返回读取的二进制数据,返回类型为raw。 PKG_UTIL.FILE_READ_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_READ_RAW( file IN INTEGER, length IN INTEGER DEFAULT NULL ) RETURN RAW 表40 PKG_UTIL.FILE_READ_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 length INTEGER IN 是 要读取的长度,默认为NULL。默认情况下读取文件中所有数据,最大为1G。 PKG_UTIL.FILE_WRITE_RAW 向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。 PKG_UTIL.FILE_WRITE_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE_RAW( file IN INTEGER, r IN RAW ) RETURN BOOL 表41 PKG_UTIL.FILE_WRITE_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 r RAW IN 否 准备传入文件的数据 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 PKG_UTIL.FILE_FLUSH函数原型为: 1 2 3 4 PKG_UTIL.FILE_FLUSH( file IN INTEGER ) RETURN VOID 表42 PKG_UTIL.FILE_FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_CLOSE( file IN INTEGER ) RETURN BOOL 表43 PKG_UTIL.FILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个磁盘文件,操作的时候需要有充分的权限。 PKG_UTIL.FILE_REMOVE函数原型为: 1 2 3 4 PKG_UTIL.FILE_REMOVE( file_name IN TEXT ) RETURN VOID 表44 PKG_UTIL.FILE_REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 filen_ame TEXT IN 否 要删除的文件名 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 PKG_UTIL.FILE_RENAME函数原型为: 1 2 3 4 5 6 PKG_UTIL.FILE_RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite BOOLEAN DEFAULT false) 表45 PKG_UTIL.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 是 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 PKG_UTIL.FILE_SIZE 返回指定的文件大小。 PKG_UTIL.FILE_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_SIZE( file_name IN TEXT )return BIGINT 表46 PKG_UTIL.FILE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_BLOCK_SIZE 返回指定的文件含有的块数量。 PKG_UTIL.FILE_BLOCK_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_BLOCK_SIZE( file_name IN TEXT )return BIGINT 表47 PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_EXISTS 判断指定的文件是否存在。 PKG_UTIL.FILE_EXISTS函数原型为: 1 2 3 4 PKG_UTIL.FILE_EXISTS( file_name IN TEXT ) RETURN BOOL 表48 PKG_UTIL.FILE_EXISTS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_GETPOS函数原型为: 1 2 3 4 PKG_UTIL.FILE_GETPOS( file IN INTEGER ) RETURN BIGINT 表49 PKG_UTIL.FILE_GETPOS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 PKG_UTIL.FILE_SEEK函数原型为: 1 2 3 4 5 void PKG_UTIL.FILE_SEEK( file IN INTEGER, start IN BIGINT ) RETURN VOID 表50 PKG_UTIL.FILE_SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 start BIGINT IN 否 文件偏移,字节。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 PKG_UTIL.FILE_CLOSE_ALL函数原型为: PKG_UTIL.FILE_CLOSE_ALL( ) RETURN VOID 表51 PKG_UTIL.FILE_CLOSE_ALL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 无 无 无 无 无 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为: 1 2 3 4 5 6 PKG_UTIL.EXCEPTION_REPORT_ERROR( code INTEGER, log TEXT, flag BOOLEAN DEFAULT FALSE ) RETURN INTEGER 表52 PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 code INTEGER IN 否 运行异常所打印的错误码。 log TEXT IN 否 运行异常所打印的日志提示信息。 flag BOOLEAN IN 是 保留字段,默认为FALSE。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息 PKG_UTIL.APP_READ_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_READ_CLIENT_INFO( OUT buffer TEXT )return TEXT 表53 PKG_UTIL.APP_READ_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 否 返回的client_info信息 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息 PKG_UTIL.APP_SET_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_SET_CLIENT_INFO( str TEXT ) 表54 PKG_UTIL.APP_SET_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str TEXT IN 否 要设置的client_info信息 PKG_UTIL.LOB_CONVERTTOBLOB 将clob转成blob,amount为要转换的长度 PKG_UTIL.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB( dest_lob BLOB, src_clob CLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )return RAW 表55 PKG_UTIL.LOB_CONVERTTOBLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB IN 否 目标LOB src_clob CLOB IN 否 要转换的CLOB amount INTEGER IN 否 转换的长度 dest_offset INTEGER IN 否 目标LOB的起始位置 src_offset INTEGER IN 否 源CLOB的起始位置 PKG_UTIL.lLOB_CONVERTTOCLOB 将BLOB转成CLOB,amount为要转换的长度 PKG_UTIL.LOB_CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOCLOB( dest_lob CLOB, src_blob BLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )return TEXT 表56 PKG_UTIL.LOB_CONVERTTOCLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB IN 否 目标LOB src_blob BLOB IN 否 要转换的BLOB amount INTEGER IN 否 转换的长度 dest_offset INTEGER IN 否 目标lob的起始位置 src_offset INTEGER IN 否 源clob的起始位置 PKG_UTIL.LOB_TEXTTORAW 将text转成raw PKG_UTIL.LOB_TEXTTORAW函数原型为: 1 2 3 4 PKG_UTIL.LOB_TEXTTORAW( src_lob CLOB ) RETURN RAW 表57 PKG_UTIL.LOB_TEXTTORAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob CLOB IN 否 要转换的LOB数据 PKG_UTIL.LOB_RAWTOTEXT 将RAW转成TEXT。 PKG_UTIL.LOB_RAWTOTEXT函数原型为: 1 2 3 4 PKG_UTIL.LOB_RAWTOTEXT( src_lob IN BLOB ) RETURN TEXT 表58 PKG_UTIL.LOB_RAWTOTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob BLOB IN 否 要转换的LOB数据。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差别 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY函数原型为: 1 2 3 4 5 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY( str1 TEXT, str2 TEXT ) RETURN INTEGER 表59 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str1 TEXT IN 否 第一个字符串 str2 TEXT IN 否 第二个字符串 PKG_UTIL.RAW_CAST_TO_VARCHAR2 raw类型转成varchar2。 PKG_UTIL.RAW_CAST_TO_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_TO_VARCHAR2( str RAW ) RETURN VARCHAR2 表60 PKG_UTIL.RAW_CAST_TO_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str RAW IN 否 十六进制字符串 PKG_UTIL.SESSION_CLEAR_CONTEXT 清除session_context信息 PKG_UTIL.SESSION_CLEAR_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_CLEAR_CONTEXT( namespace TEXT, client_identifier TEXT, attribute TEXT ) RETURN INTEGER 表61 PKG_UTIL.SESSION_CLEAR_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 client_identifier TEXT IN 是 client_identifier,一般与namespace即可,当为null时,默认修改所有namesapce attribute TEXT IN 否 要清除的属性值 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找属性值 PKG_UTIL.SESSION_SEARCH_CONTEXT函数原型为: 1 2 3 4 5 PKG_UTIL.SESSION_SEARCH_CONTEXT( namespace TEXT, attribute TEXT ) RETURN INTEGER 表62 PKG_UTIL.SESSION_SEARCH_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 attribute TEXT IN 否 要查找的属性值 PKG_UTIL.SESSION_SET_CONTEXT 设置属性值 PKG_UTIL.SESSION_SET_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_SET_CONTEXT( namespace TEXT, attribute TEXT, value TEXT ) RETURN INTEGER 表63 PKG_UTIL.SESSION_SET_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 attribute TEXT IN 否 要设置的属性 value TEXT IN 否 属性对应的值 PKG_UTIL.UTILITY_GET_TIME 打印unix时间戳。 PKG_UTIL.UTILITY_GET_TIME函数原型为: 1 2 PKG_UTIL.UTILITY_GET_TIME() RETURN BIGINT PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE() RETURN TEXT PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK() RETURN TEXT PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程调用堆栈。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_CALL_STACK() RETURN TEXT PKG_UTIL.UTILITY_COMPILE_SCHEMA 重编译指定shema中的包函数和存储过程。 PKG_UTIL.UTILITY_COMPILE_SCHEMA函数原型为: PKG_UTIL.UTILITY_COMPILE_SCHEMA ( schema IN VARCHAR2, compile_all IN BOOLEAN DEFAULT TRUE, reuse_settings IN BOOLEAN DEFAULT FALSE ) RETURNS VOID PKG_UTIL.GS_COMPILE_SCHEMA 重编译指定shema中的包函数和存储过程。 PKG_UTIL.GS_COMPILE_SCHEMA存储过程原型为: pkg_util.GS_COMPILE_SCHEMA ( schema_name IN VARCHAR2 DEFAULT NULL, compile_all IN BOOLEAN DEFAULT FALSE, retry_times IN INT DEFAULT 10 ) 表64 PKG_UTIL.GS_COMPILE_SCHEMA接口参数说明 参数 类型 入参/出参 是否可以为空 描述 schema_name VARCHAR2 IN 是 命名空间的名称。 compile_all BOOLEAN IN 是 编译所有。 false:编译pg_object表中状态为false的包、函数、存储过程。 true:编译pg_object表中所有的包、函数、存储过程。 retry_times:重试次数。 PKG_UTIL.APP_SET_MODULE 设置module的值。 PKG_UTIL.APP_SET_MODULE存储过程原型为: PKG_UTIL.APP_SET_MODULE ( str TEXT) returns VOID 表65 PKG_UTIL.APP_SET_MODULE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 text TEXT IN 否 要设置module的值。 示例: CALL PKG_UTIL.APP_SET_MODULE('set module'); app_set_module ---------------- (1 row) PKG_UTIL.APP_READ_MODULE 读取module的值。 PKG_UTIL.APP_READ_MODULE存储过程原型为: PKG_UTIL.APP_READ_MODULE( OUT buffer TEXT ) 表66 PKG_UTIL.APP_READ_MODULE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 否 返回的module的值。 示例: DECLARE module VARCHAR2(64); BEGINPKG_UTIL.APP_READ_MODULE(module); dbe_output.print_line(module); END; / set module ANONYMOUS BLOCK EXECUTE PKG_UTIL.APP_SET_ACTION 设置action的值。 PKG_UTIL.APP_SET_ACTION存储过程原型为: PKG_UTIL.APP_SET_ACTION ( str TEXT) returns VOID 表67 PKG_UTIL.APP_SET_ACTION接口参数说明 参数 类型 入参/出参 是否可以为空 描述 text TEXT IN 否 要设置action的值。 示例: CALL PKG_UTIL.APP_SET_ACTION('set action'); app_set_action ---------------- (1 row) PKG_UTIL.APP_READ_ACTION 读取action的值。 PKG_UTIL.APP_READ_ACTION存储过程原型为: PKG_UTIL.APP_READ_ACTION( OUT buffer TEXT ) 表68 PKG_UTIL.APP_READ_ACTION接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 否 返回的action的值。 示例: DECLARE action VARCHAR2(64); BEGINPKG_UTIL.APP_READ_ACTION(action); dbe_output.print_line(action); END; / set action ANONYMOUS BLOCK EXECUTE PKG_UTIL.MODIFY_PACKAGE_STATE 用于修改当前会话的PL/SQL的状态。 PKG_UTIL.MODIFY_PACKAGE_STATE存储过程原型为: PKG_UTIL.MODIFY_PACKAGE_STATE ( flags INT) returns VOID 表69 PKG_UTIL.MODIFY_PACKAGE_STATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 flags INT IN 否 对PL/SQL采取的操作的位标志。 当flags=1时,在执行完最顶层的PL/SQL后,会释放会话中目前运行的PL/SQL的会话缓存。清除任何包全局的当前值并关闭缓存的游标。在后续使用时,PL/SQL将重新实例化,并重新初始化包全局。 不支持其他位标志。 示例: CALL PKG_UTIL.MODIFY_PACKAGE_STATE(1); modify_package_state ---------------------- (1 row) 父主题: 基础接口
-
响应消息 响应参数说明请参见下表: 参数 是否必选 类型 取值范围 参数说明 resultCode M String 6 调用结果码。 000000:表示资源同步开通 000004:表示资源异步开通 具体请参见1.9 调用结果码说明 说明:如果创建实例耗时较长,建议返回0000004,云商店后续会通过查询实例信息接口查询实例开通结果 resultMsg O String 255 调用结果描述。 instanceId M String 64 云商店业务ID。 响应消息示例: { "resultCode":"000000", "resultMsg":"success" , "instanceId":"03pf80c2bae96vc49b80b917bea776d7" }
-
请求消息 请求参数说明请参见下表。云商店会结合商家创建上架的商品售卖模式来对应请求,商家也需要根据请求的信息来对应执行生产。 请求方式:POST Body参数 参数 是否必选 参数类型 最大字符长度 说明 activity M String 20 接口请求标识,用于区分接口请求场景。 新购场景取值:newInstance orderId M String 64 云商店订单ID。 orderLineId M String 64 云商店订单行ID。 businessId M String 64 云商店业务ID。 每一次请求,businessId皆不一致。 testFlag O String 2 是否为调试请求。 1:调试请求 0:非调试请求 默认取值为“0”。 请求消息示例: curl -X POST 'https://www.isvwebsite.com/saasproduce?signature=11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48×tamp=1680508066618&nonce=50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA' -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' -d'{"activity":"newInstance","businessId":"87b94795-0603-4e24-8ae5-69420d60e3c8","orderId":" CS 2211181819B4LVS","orderLineId":"CS2211181819B4LVS-000001","testFlag":"0"}'
-
接口说明 客户购买商品并付款成功,云商店将调用本接口通知商家创建实例 商家需要返回此订单的唯一ID(instanceId)。建议此ID直接使用该订单首次请求时云商店传入的businessId,以确保instanceId的唯一性。 在正常购买场景中,请不要阻塞此接口,如果耗时较长,建议异步创建实例,可以先生成instanceId,然后立即返回。云商店后续会通过查询实例信息接口查询实例开通结果。 如涉及按需、按需套餐包商品,需要对接按需使用量推送(新)接口。 获取订单信息,请参考查询订单接口。 云商店服务有可能重发请求,针对同一订单号(orderId)和订单行(orderLineId),商家的服务器应当返回相同的instanceId,不应该创建新的SaaS实例,返回之前成功创建的实例信息即可。 按需交易场景,需要基于订单号(orderId)和产品标识(productId)构建幂等。 创建实例流程如下图所示:
-
PKG_UTIL PKG_UTIL支持的所有接口请参见表1: 表1 PKG_UTIL 接口名称 描述 PKG_UTIL.LOB_GET_LENGTH 获取LOB的长度。 PKG_UTIL.LOB_READ 读取LOB对象的一部分。 PKG_UTIL.LOB_WRITE 将源对象按照指定格式写入到目标对象。 PKG_UTIL.LOB_APPEND 将LOB源对象追加到目标LOB对象。 PKG_UTIL.LOB_COMPARE 根据指定长度比较两个LOB对象。 PKG_UTIL.LOB_MATCH 返回一个字符串在LOB中第N次出现的位置。 PKG_UTIL.LOB_RESET 将lob的指定位置重置为指定字符。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数将源BLOB/CLOB对象读取指定长度内容,并追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数将源BLOB/CLOB对象追加到目标BLOB/CLOB对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE 该函数将源BLOB/CLOB对象,从指定偏移读取指定长度内容,写入到目标BLOB/CLOB对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格,返回处理后的CLOB以及实际处理的长度。 PKG_UTIL.LOADBLOBFROMFILE 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADCLOBFROMFILE 将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.BFILE_GET_LENGTH 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置已有的内容, 并返回目标LOB对象。 PKG_UTIL.IO_PRINT 将字符串打印输出。 PKG_UTIL.RAW_GET_LENGTH 获取raw的长度。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 将VARCHAR2转化为raw。 •PKG_UTIL.RAW_CAST_FROM_... 将binary integer转化为raw。 •PKG_UTIL.RAW_CAST_TO_BI... 将raw转化为binary integer。 PKG_UTIL.RANDOM_SET_SEED 设置随机种子。 PKG_UTIL.RANDOM_GET_VALUE 返回随机值。 PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录。 PKG_UTIL.FILE_OPEN 根据指定文件名和设置的目录打开一个文件。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_READ 从一个打开的文件句柄中读取指定长度的数据。 PKG_UTIL.FILE_READLINE 从一个打开的文件句柄中读取一行数据。 PKG_UTIL.FILE_WRITE 将buffer中的数据写入到文件中。 PKG_UTIL.FILE_WRITELINE 将buffer写入文件,并追加换行符。 PKG_UTIL.FILE_NEWLINE 新起一行。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据。 PKG_UTIL.FILE_WRITE_RAW 将二进制数据写入到文件中。 PKG_UTIL.FILE_FLUSH 将一个文件句柄中的数据写入到物理文件中。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个物理文件,操作需要有对应权限。 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 PKG_UTIL.FILE_SIZE 返回文件大小。 PKG_UTIL.FILE_BLOCK_SIZE 返回文件含有的块数量。 PKG_UTIL.FILE_EXISTS 判断文件是否存在。 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_SEEK 设置文件位置为指定偏移。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有文件句柄。 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.RANDOM_SET_SEED 设置一个随机数种子。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息。 PKG_UTIL.LOB_CONVERTTOBLOB CLOB类型转换成BLOB类型。 PKG_UTIL.LOB_CONVERTTOCLOB BLOB类型转换成CLOB类型。 PKG_UTIL.LOB_RAWTOTEXT raw类型转成TEXT类型。 PKG_UTIL.LOB_RESET 清空一个LOB类型的数据。 PKG_UTIL.LOB_TEXTTORAW TEXT类型转成raw类型。 PKG_UTIL.LOB_RAWTOTEXT raw类型转成TEXT类型。 PKG_UTIL.LOB_WRITE 将数据写入LOB类型。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差距。 PKG_UTIL.RAW_CAST_TO_VARCHAR2 raw类型转成VARCHAR2类型。 PKG_UTIL.SESSION_CLEAR_CONTEXT 清空session_context中的属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找一个属性值。 PKG_UTIL.SESSION_SET_CONTEXT 设置一个属性值。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程的调用堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_GET_TIME 查看系统Unix时间戳。 PKG_UTIL.UTILITY_COMPILE_SCHEMA 重编译指定Schema、PACKAGE、函数和存储过程。当编译到的PL/SQL对象遇到报错时,将直接返回,不再继续编译。该PACKAGE已废弃。推荐使用pkg_util.gs_compile_schema。 PKG_UTIL.GS_COMPILE_SCHEMA 重编译指定Schema、PACKAGE、函数和存储过程。当编译遇到PL/SQL对象报错时,异常将会被捕获,继续编译其它对象,直到全部对象编译成功或者到达尝试次数后停止。通过jdbc执行该高级包,sqlstate会打印00000错误码,00000错误码代表成功完成,错误码说明可查看《错误码参考》中“SQL标准错误码说明”章节。 PKG_UTIL.APP_SET_MODULE 设置module的值。 PKG_UTIL.APP_READ_MODULE 读取module的值。 PKG_UTIL.APP_SET_ACTION 设置action的值。 PKG_UTIL.APP_READ_ACTION 读取action的值。 PKG_UTIL.MODIFY_PACKAGE_STATE 用于修改当前会话的PL/SQL的状态,从会话中释放与以前运行的每个PL/SQL程序关联的所有内存。 PKG_UTIL.LOB_GET_LENGTH 该函数LOB_GET_LENGTH获取输入数据的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 8 9 PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB ) RETURN INTEGER; PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB ) RETURN INTEGER; 表2 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待获取长度的对象。 PKG_UTIL.LOB_READ 该函数LOB_READ读取一个对象,并返回指定部分。 PKG_UTIL.LOB_READ函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_READ( lob IN ANYELEMENT, len IN INT, start IN INT, mode IN INT ) RETURN ANYELEMENT 表3 PKG_UTIL.LOB_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 clob或者blob类型数据。 len INT IN 否 返回结果长度。 start INT IN 否 相较于第一个字符的偏移量。 mode INT IN 否 判断读取操作的类型, 0 :read; 1 : trim; 2 : substr。 PKG_UTIL.LOB_WRITE 该函数LOB_WRITE将源对象按照指定的参数写入目标对象, 并返回目标对象。 PKG_UTIL.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PKG_UTIL.LOB_WRITE( dest_lob INOUT BLOB, src_lob IN RAW len IN INT, start_pos IN BIGINT ) RETURN BLOB; PKG_UTIL.LOB_WRITE( dest_lob INOUT CLOB, src_lob IN VARCHAR2 len IN INT, start_pos IN BIGINT ) RETURN CLOB; 表4 PKG_UTIL.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB/BLOB INOUT 否 写入的目标对象。 src_lob CLOB/BLOB IN 否 被写入的源对象。 len INT IN 否 源对象的写入长度。 start_pos BIGINT IN 否 目标对象的写入起始位置。 PKG_UTIL.LOB_APPEND 该函数LOB_APPEND将源BLOB/CLOB对象追加到目标BLOB/CLOB对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_APPEND( dest_lob INOUT BLOB, src_lob IN BLOB, len IN INT DEFAULT NULL ) RETURN BLOB; PKG_UTIL.LOB_APPEND( dest_lob INOUT CLOB, src_lob IN CLOB, len IN INT DEFAULT NULL ) RETURN CLOB; 表5 PKG_UTIL.LOB_APPEND接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标blob/clob对象。 src_lob BLOB/CLOB IN 否 被写入的源blob/clob对象。 len INT IN 是 src中读取并append到dest上的长度,默认null,将src全部append上去。 PKG_UTIL.LOB_COMPARE 该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同,lob1大则返回1,lob2大返回-1,相等返回0。 PKG_UTIL.LOB_COMPARE函数原型为: 1 2 3 4 5 6 7 8 PKG_UTIL.LOB_COMPARE( lob1 IN ANYELEMENT, lob2 IN ANYELEMENT, len IN INT DEFAULT 1073741771, start_pos1 IN INT DEFAULT 1, start_pos2 IN INT DEFAULT 1 ) RETURN INTEGER; 表6 PKG_UTIL.LOB_COMPARE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob1 CLOB/BLOB IN 否 待比较的字符串。 lob2 CLOB/BLOB IN 否 待比较的字符串。 len INT IN 否 比较的长度。 start_pos1 INT IN 否 lob1起始偏移量。 start_pos2 INT IN 否 lob2起始偏移量。 PKG_UTIL.LOB_MATCH 该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。 PKG_UTIL.LOB_MATCH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_MATCH( lob IN ANYELEMENT, pattern IN ANYELEMENT, start IN INT, match_nth IN INT DEFAULT 1 ) RETURN INTEGER; 表7 PKG_UTIL.LOB_MATCH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB/BLOB IN 否 待比较的字符串。 pattern CLOB/BLOB IN 否 待匹配的pattern。 start INT IN 否 lob的起始比较位置。 match_nth INT IN 否 第几次匹配到。 PKG_UTIL.LOB_RESET 该函数LOB_RESET清除一段数据为字符value。 PKG_UTIL.LOB_RESET函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_RESET( lob INOUT BLOB, len INOUT INT, start IN INT DEFAULT 1, value IN INT DEFAULT 0 ) RETURN RECORD; 表8 PKG_UTIL.LOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB IN 否 待重置的字符串。 len INT IN 否 重置的长度。 start INT IN 否 重置的起始位置。 value INT IN 是 设置的字符。默认值‘0’。 PKG_UTIL.LOB_GET_LENGTH 该函数获取并返回指定的LOB类型对象的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_GET_LENGTH( lob IN BLOB) RETURN BIGINT; PKG_UTIL.LOB_GET_LENGTH( lob IN CLOB) RETURN BIGINT; 表9 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB/CLOB IN 否 指定的LOB类型对象。 PKG_UTIL.LOB_READ_HUGE 根据指定的长度及起始位置偏移读取LOB内容的一部分,并返回读取到的LOB和长度。 PKG_UTIL.LOB_READ_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PKG_UTIL.LOB_READ_HUGE( lob IN CLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( lob IN BLOB, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; PKG_UTIL.LOB_READ_HUGE( fd IN INTEGER, len IN BIGINT, start_pos IN BIGINT, mode IN INTEGER) RETURN RECORD; 表10 PKG_UTIL.LOB_READ_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob/fd BLOB/CLOB/INTEGER IN 否 指定的LOB类型对象/BFILE文件的文件描述符。 len BIGINT IN 否 读取长度。 start_pos BIGINT IN 否 读取起始偏移位置。 mode INTEGER IN 否 read模式(0代表read、1代表trim、2代表substr)。 PKG_UTIL.LOB_WRITEAPPEND_HUGE 该函数LOB_WRITEAPPEND_HUGE将源BLOB/CLOB对象读取指定长度内容,并追加到目标BLOB/CLOB对象,并返回目标对象。 PKG_UTIL.LOB_WRITEAPPEND_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT CLOB, len IN INTEGER, src_lob IN VARCHAR2 )RETURN CLOB; PKG_UTIL.LOB_WRITEAPPEND_HUGE( dest_lob INOUT BLOB, len IN INTEGER, src_lob IN RAW )RETURN BLOB; 表11 PKG_UTIL.LOB_WRITEAPPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 len INTEGER IN 是 写入源对象的长度,为NULL则默认写入源对象全部。 src_lob VARCHAR2/RAW IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.LOB_APPEND_HUGE 该函数LOB_APPEND_HUGE将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND_HUGE函数原型为: 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT BLOB, src_lob IN BLOB) RETURN BLOB; 1 2 3 4 PKG_UTIL.LOB_APPEND_HUGE( dest_lob INOUT CLOB, src_lob IN CLOB) RETURN CLOB; 表12 PKG_UTIL.LOB_APPEND_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 写入的目标BLOB/CLOB对象。 src_lob BLOB/CLOB IN 否 被写入的源BLOB/CLOB对象。 PKG_UTIL.READ_BFILE_TO_BLOB 该函数READ_BFILE_TO_BLOB将源BFILE文件读取成目标BLOB对象, 并返回目标对象。 PKG_UTIL.READ_BFILE_TO_BLOB函数原型为: 1 2 3 PKG_UTIL.READ_BFILE_TO_BLOB( fd IN INTEGER )RETURN BLOB; 表13 PKG_UTIL.READ_BFILE_TO_BLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 读取的源BFILE文件。 PKG_UTIL.LOB_COPY_HUGE 该函数LOB_COPY_HUGE将源blob/clob对象,从指定偏移读取指定长度内容,写入到目标blob/clob对象的指定偏移位置, 并返回目标对象。 PKG_UTIL.LOB_COPY_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT BLOB, source_obj IN BLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN BLOB; PKG_UTIL.LOB_COPY_HUGE( lob_obj INOUT CLOB, source_obj IN CLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1 )RETURN CLOB; 表14 PKG_UTIL.LOB_COPY_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob_obj BLOB/CLOB INOUT 否 目标BLOB/CLOB对象。 source_obj BLOB/CLOB IN 否 源BLOB/CLOB对象。 amount BIGINT IN 否 复制的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT IN 否 目标LOB的载入偏移位置。 src_offset BIGINT IN 否 源LOB的读取偏移位置。 PKG_UTIL.BLOB_RESET 该函数将BLOB中一段数据set为value值,返回处理后的BLOB以及实际处理的长度。 PKG_UTIL.BLOB_RESET函数原型为: 1 2 3 4 5 6 PKG_UTIL.BLOB_RESET( lob INOUT BLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1, value IN INTEGER DEFAULT 0 )RETURN RECORD; 表15 PKG_UTIL.BLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob BLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字节。 start INTEGER IN 否 重置的起始位置。 value INTEGER IN 是 设置的字符。默认值‘0’。 PKG_UTIL.CLOB_RESET 该函数将一段数据set为空格。 PKG_UTIL.CLOB_RESET函数原型为: 1 2 3 4 5 PKG_UTIL.CLOB_RESET( lob INOUT CLOB, len INOUT BIGINT, start_pos IN BIGINT DEFAULT 1 )RETURN RECORD; 表16 PKG_UTIL.CLOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob CLOB INOUT 否 待重置的LOB。 len INTEGER INOUT 否 重置的长度,单位字符。 start INTEGER IN 否 重置的起始位置,默认为1。 PKG_UTIL.LOADBLOBFROMFILE 该函数LOADBLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标BLOB对象的指定偏移位置, 并返回目标对象,读取位置,写入位置。 PKG_UTIL.LOADBLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADBLOBFROMFILE( dest_lob INOUT BLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表17 PKG_UTIL.LOADBLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 IN参数为目标BLOB对象,OUT参数为写入后的目标BLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 复制的长度(BLOB以字节为单位,CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOADCLOBFROMFILE 该函数LOADCLOBFROMFILE将源BFILE对象,从指定偏移读取指定长度内容,写入到目标CLOB对象的指定偏移位置,并返回目标对象、读取位置和写入位置。 PKG_UTIL.LOADCLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOADCLOBFROMFILE( dest_lob INOUT CLOB, fd IN INTEGER, amount IN BIGINT, dest_offset INOUT BIGINT, file_offset INOUT BIGINT )RETURN RECORD; 表18 PKG_UTIL.LOADCLOBFROMFILE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 IN参数为目标CLOB对象,OUT参数为写入后的目标CLOB对象。 fd INTEGER IN 否 源BFILE对象的文件描述符。 amount BIGINT IN 否 复制的长度(CLOB以字符为单位)。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入偏移位置,OUT参数为实际写入位置。 src_offset BIGINT INOUT 否 IN参数为源BFILE的读取偏移位置,OUT参数为实际读取位置。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成BLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE( dest_lob INOUT BLOB, src_clob IN CLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表19 PKG_UTIL.LOB_CONVERTTOBLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB INOUT 否 目标LOB。 src_clob CLOB IN 否 要转换的CLOB。 amount BIGINT IN 否 转换的长度,字符为单位。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源CLOB的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE 将src_clob从指定偏移位置读取指定长度内容转成CLOB,并写入dest_lob的指定位置,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE( dest_lob INOUT CLOB, src_blob IN BLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) )RETURN RECORD; 表20 PKG_UTIL.LOB_CONVERTTOCLOB_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB INOUT 否 目标LOB。 src_blob BLOB IN 否 要转换的BLOB。 amount BIGINT IN 否 转换的长度,字节为单位。 dest_offset BIGINT INOUT 否 IN参数为目标LOB的写入起始位置,OUT参数为实际的写入位置。 src_offset BIGINT INOUT 否 IN参数为源CLOB的读取起始位置,OUT参数为实际的读取起始位置。 PKG_UTIL.BFILE_GET_LENGTH 该函数获取并返回指定的BFILE文件的长度。 PKG_UTIL.BFILE_GET_LENGTH函数原型为: 1 2 3 PKG_UTIL.BFILE_GET_LENGTH( fd INTEGER )RETURN BIGINT; 表21 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.BFILE_OPEN 该函数打开BFILE文件,返回文件描述符。 PKG_UTIL.BFILE_OPEN函数原型为: 1 2 3 4 PKG_UTIL.BFILE_OPEN( file_name TEXT, open_mode TEXT) RETURN INTEGER; 表22 PKG_UTIL.BFILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 指定的BFILE文件的文件name。 open_mode TEXT IN 否 打开方式(只支持‘r’,read功能)。 PKG_UTIL.BFILE_CLOSE 该函数关闭打开的BFILE文件。 PKG_UTIL.BFILE_CLOSE函数原型为: 1 2 3 PKG_UTIL.BFILE_CLOSE( fd INTEGER) RETURN bool; 表23 PKG_UTIL.BFILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 fd INTEGER IN 否 指定的BFILE文件的文件描述符。 PKG_UTIL.LOB_WRITE_HUGE 将源对象从起始位置读取len长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置已有的内容, 并返回目标LOB对象。 PKG_UTIL.LOB_WRITE_HUGE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT BLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN RAW )RETURN BLOB; PKG_UTIL.LOB_WRITE_HUGE( dest_lob INOUT CLOB, len IN INTEGER, start_pos IN BIGINT, src_lob IN VARCHAR2 )RETURN CLOB; 表24 PKG_UTIL.LOB_WRITE_HUGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB/CLOB INOUT 否 IN参数为待写入的目标LOB,OUT参数为写入内容后的LOB len INTEGER IN 否 待写入的长度(BLOB以字节为单位,CLOB以字符为单位) start_pos BIGINT IN 否 在dest_lob中写入的偏移位置 src_lob RAW/VARCHAR2 IN 否 源LOB对象 PKG_UTIL.IO_PRINT 该函数IO_PRINT将一段字符串打印输出。 PKG_UTIL.IO_PRINT函数原型为: 1 2 3 4 5 PKG_UTIL.IO_PRINT( format IN TEXT, is_one_line IN BOOLEAN ) RETURN void; 表25 PKG_UTIL.IO_PRINT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 format TEXT IN 否 待打印输出的字符串。 is_one_line BOOLEAN IN 否 是否输出为一行。 PKG_UTIL.RAW_GET_LENGTH 该函数RAW_GET_LENGTH获取raw的长度。 PKG_UTIL.RAW_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.RAW_GET_LENGTH( value IN RAW ) RETURN INTEGER; 表26 PKG_UTIL.RAW_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 raw RAW IN 否 待获取长度的对象。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 该函数RAW_CAST_FROM_VARCHAR2将VARCHAR2转化为RAW。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_FROM_VARCHAR2( str IN VARCHAR2 ) RETURN raw; 表27 PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str VARCHAR2 IN 否 需要转化的源数据。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER( value IN BIGINT, endianess IN INTEGER ) RETURN RAW; 表28 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value BIGINT IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER( value IN RAW, endianess IN INTEGER ) RETURN INTEGER; 表29 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value RAW IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,现支持1或2或3(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN,3代表MACHINE_ENDIAN)。 PKG_UTIL.RANDOM_SET_SEED 该函数RANDOM_SET_SEED设置随机数种子。 PKG_UTIL.RANDOM_SET_SEED函数原型为: 1 2 3 4 PKG_UTIL.RANDOM_SET_SEED( seed IN INT ) RETURN integer; 表30 PKG_UTIL.RANDOM_SET_SEED接口参数说明 参数 类型 入参/出参 是否可以为空 描述 seed INT IN 否 随机数种子。 PKG_UTIL.RANDOM_GET_VALUE 该函数RANDOM_GET_VALUE返回0~1区间的一个随机数,其有效数字为15位。 PKG_UTIL.RANDOM_GET_VALUE函数原型为: 1 2 3 PKG_UTIL.RANDOM_GET_VALUE( ) RETURN NUMERIC; PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录,基本上所有涉及单个目录的操作,都需要调用此方法先设置操作的目录。 PKG_UTIL.FILE_SET_DIRNAME函数原型为: 1 2 3 4 PKG_UTIL.FILE_SET_DIRNAME( dir IN TEXT ) RETURN BOOL 表31 PKG_UTIL.FILE_SET_DIRNAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dirname TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 PKG_UTIL.FILE_OPEN 该函数用来打开一个文件,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 PKG_UTIL.FILE_OPEN函数原型为: 1 2 3 PKG_UTIL.FILE_OPEN( file_name IN TEXT, open_mode IN INTEGER) 表32 PKG_UTIL.FILE_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode INTEGER IN 否 指定文件的打开模式,包含r:read text,w: write text和a: append text。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为: 1 2 3 PKG_UTIL.FILE_SET_MAX_LINE_SIZE( max_line_size in INTEGER) RETURN BOOL 表33 PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 max_line_size INTEGER IN 否 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_IS_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_IS_CLOSE( file in INTEGER ) RETURN BOOL 表34 PKG_UTIL.FILE_IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_READ 根据指定的长度从一个打开的文件句柄中读取出数据。 PKG_UTIL.FILE_READ函数原型为: 1 2 3 4 PKG_UTIL.FILE_READ( file IN INTEGER, buffer OUT TEXT, len IN BIGINT DEFAULT 1024) 表35 PKG_UTIL.FILE_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT IN 否 用于接收数据的BUFFER。 len BIGINT IN 是 从文件中读取的字节数。 PKG_UTIL.FILE_READLINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 PKG_UTIL.FILE_READLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_READLINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) 表36 PKG_UTIL.FILE_READLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT IN 否 用于接收数据的BUFFER。 len INTEGER IN 是 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_line_size来指定大小。 PKG_UTIL.FILE_WRITE 将BUFFER中指定的数据写入到文件中。 PKG_UTIL.FILE_WRITE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL 表37 PKG_UTIL.FILE_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_NEWLINE 向一个打开的文件中写入一个行终结符。行终结符和平台相关。 PKG_UTIL.FILE_NEWLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_NEWLINE( file IN INTEGER ) RETURN BOOL 表38 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_WRITELINE 向一个打开的文件中写入一行。 PKG_UTIL.FILE_WRITELINE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITELINE( file IN INTEGER, buffer IN TEXT ) RETURN BOOL 表39 PKG_UTIL.FILE_WRITELINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 buffer TEXT IN 否 要写入的内容。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据,返回读取的二进制数据,返回类型为RAW。 PKG_UTIL.FILE_READ_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_READ_RAW( file IN INTEGER, length IN INTEGER DEFAULT NULL ) RETURN raw 表40 PKG_UTIL.FILE_READ_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 length INTEGER IN 是 要读取的长度,默认为NULL。默认情况下读取文件中所有数据,最大为1G。 PKG_UTIL.FILE_WRITE_RAW 向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。 PKG_UTIL.FILE_WRITE_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE_RAW( file IN INTEGER, r IN RAW ) RETURN BOOL 表41 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 r RAW IN 是 准备传入文件的数据 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 PKG_UTIL.FILE_FLUSH函数原型为: 1 2 3 4 PKG_UTIL.FILE_FLUSH( file IN INTEGER ) RETURN VOID 表42 PKG_UTIL.FILE_FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_CLOSE( file IN INTEGER ) RETURN BOOL 表43 PKG_UTIL.FILE_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个磁盘文件,操作的时候需要有充分的权限。 PKG_UTIL.FILE_REMOVE函数原型为: 1 2 3 4 PKG_UTIL.FILE_REMOVE( file_name IN TEXT ) RETURN VOID 表44 PKG_UTIL.FILE_REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 filen_ame TEXT IN 否 要删除的文件名 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似Unix的mv。 PKG_UTIL.FILE_RENAME函数原型为: 1 2 3 4 5 6 PKG_UTIL.FILE_RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite BOOLEAN DEFAULT FALSE) 表45 PKG_UTIL.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 否 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 PKG_UTIL.FILE_SIZE 返回指定的文件大小。 PKG_UTIL.FILE_SIZE函数原型为: 1 2 3 BIGINT PKG_UTIL.FILE_SIZE( file_name IN TEXT )RETURN BIGINT 表46 PKG_UTIL.FILE_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_BLOCK_SIZE 返回指定的文件含有的块数量。 PKG_UTIL.FILE_BLOCK_SIZE函数原型为: 1 2 3 BIGINT PKG_UTIL.FILE_BLOCK_SIZE( file_name IN TEXT )RETURN BIGINT 表47 PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_EXISTS 判断指定的文件是否存在。 PKG_UTIL.FILE_EXISTS函数原型为: 1 2 3 4 PKG_UTIL.FILE_EXISTS( file_name IN TEXT ) RETURN BOOL 表48 PKG_UTIL.FILE_EXISTS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file_name TEXT IN 否 文件名 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_GETPOS函数原型为: 1 2 3 4 PKG_UTIL.FILE_GETPOS( file IN INTEGER ) RETURN BIGINT 表49 PKG_UTIL.FILE_GETPOS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 PKG_UTIL.FILE_SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 PKG_UTIL.FILE_SEEK函数原型为: 1 2 3 4 5 VOID PKG_UTIL.FILE_SEEK( file IN INTEGER, start IN BIGINT ) RETURN VOID 表50 PKG_UTIL.FILE_SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 一个打开的文件句柄。 start BIGINT IN 否 文件偏移,字节。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 PKG_UTIL.FILE_CLOSE_ALL函数原型为: PKG_UTIL.FILE_CLOSE_ALL( ) RETURN VOID 表51 PKG_UTIL.FILE_CLOSE_ALL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 无 无 无 无 无 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为: 1 2 3 4 5 6 PKG_UTIL.EXCEPTION_REPORT_ERROR( code INTEGER, log TEXT, flag BOOLEAN DEFAULT FALSE ) RETURN INTEGER 表52 PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 code INTEGER IN 否 运行异常所打印的错误码。 log TEXT IN 否 运行异常所打印的日志提示信息。 flag BOOLEAN IN 是 保留字段,默认为false。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息。 PKG_UTIL.app_read_client_info函数原型为: 1 2 3 PKG_UTIL.app_read_client_info( OUT buffer TEXT )RETURN TEXT 表53 PKG_UTIL.APP_READ_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT IN 否 返回的client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_SET_CLIENT_INFO( str TEXT ) 表54 PKG_UTIL.APP_SET_CLIENT_INFO接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str TEXT IN 否 要设置的client_info信息。 PKG_UTIL.LOB_CONVERTTOBLOB 将clob转成blob,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.lob_converttoblob( dest_lob BLOB, src_clob CLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )RETURN RAW 表55 PKG_UTIL.LOB_CONVERTTOBLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob BLOB IN 否 目标LOB。 src_clob CLOB IN 否 要转换的CLOB。 amount INTEGER IN 否 转换的长度。 dest_offset INTEGER IN 否 目标LOB的起始位置。 src_offset INTEGER IN 否 源CLOB的起始位置。 PKG_UTIL.LOB_CONVERTTOCLOB 将blob转成clob,amount为要转换的长度。 PKG_UTIL.lob_converttoclob函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.lob_converttoclob( dest_lob CLOB, src_blob BLOB, amount INTEGER, dest_offset INTEGER, src_offset INTEGER )RETURN TEXT 表56 PKG_UTIL.LOB_CONVERTTOCLOB接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob CLOB IN 否 目标LOB。 src_blob BLOB IN 否 要转换的CLOB。 amount INTEGER IN 否 转换的长度。 dest_offset INTEGER IN 否 目标LOB的起始位置。 src_offset INTEGER IN 否 源CLOB的起始位置。 PKG_UTIL.LOB_TEXTTORAW 将TEXT转成RAW。 PKG_UTIL.LOB_TEXTTORAW函数原型为: 1 2 3 4 PKG_UTIL.LOB_TEXTTORAW( src_lob CLOB ) RETURN RAW 表57 PKG_UTIL.LOB_TEXTTORAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob CLOB IN 否 要转换的LOB数据。 PKG_UTIL.LOB_RAWTOTEXT 将RAW转成TEXT。 PKG_UTIL.LOB_RAWTOTEXT函数原型为: 1 2 3 4 PKG_UTIL.LOB_RAWTOTEXT( src_lob IN BLOB ) RETURN TEXT 表58 PKG_UTIL.LOB_RAWTOTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob BLOB IN 否 要转换的lob数据。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差别。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY函数原型为: 1 2 3 4 5 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY( str1 TEXT, str2 TEXT ) RETURN INTEGER 表59 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str1 TEXT IN 否 第一个字符串。 str2 TEXT IN 否 第二个字符串。 PKG_UTIL.RAW_CAST_TO_VARCHAR2 RAW类型转成VARCHAR2。 PKG_UTIL.RAW_CAST_TO_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_TO_VARCHAR2( str RAW ) RETURN VARCHAR2 表60 PKG_UTIL.RAW_CAST_TO_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str RAW IN 否 十六进制字符串 PKG_UTIL.SESSION_CLEAR_CONTEXT 清除session_context信息。 PKG_UTIL.SESSION_CLEAR_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_CLEAR_CONTEXT( namespace TEXT, client_identifier TEXT, attribute TEXT ) RETURN INTEGER 表61 PKG_UTIL.SESSION_CLEAR_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间。 client_identifier TEXT IN 否 client_identifier,一般与namespace相同即可,当为null时,默认修改所有namespace。 attribute TEXT IN 否 要清除的属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT函数原型为: 1 2 3 4 5 PKG_UTIL.SESSION_SEARCH_CONTEXT( namespace TEXT, attribute TEXT ) RETURN INTEGER 表62 PKG_UTIL.SESSION_SEARCH_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间。 attribute TEXT IN 否 要查找的属性值。 PKG_UTIL.SESSION_SET_CONTEXT 设置属性值。 PKG_UTIL.SESSION_SET_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_SET_CONTEXT( namespace TEXT, attribute TEXT, value TEXT ) RETURN INTEGER 表63 PKG_UTIL.SESSION_SET_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 属性的命名空间 attribute TEXT IN 否 要设置的属性 value TEXT IN 否 属性对应的值 PKG_UTIL.UTILITY_GET_TIME 打印unix时间戳。 PKG_UTIL.UTILITY_GET_TIME函数原型为: 1 2 PKG_UTIL.UTILITY_GET_TIME() RETURN BIGINT PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE() RETURN TEXT PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK() RETURN TEXT PKG_UTIL.UTILITY_COMPILE_SCHEMA 重编译指定schema中的包函数和存储过程。 PKG_UTIL.UTILITY_COMPILE_SCHEMA函数原型为: PKG_UTIL.UTILITY_COMPILE_SCHEMA ( schema IN VARCHAR2, compile_all IN BOOLEAN DEFAULT TRUE, reuse_settings IN BOOLEAN DEFAULT FALSE ) RETURNS VOID PKG_UTIL.GS_COMPILE_SCHEMA 重编译指定schema中的包函数和存储过程。 PKG_UTIL.GS_COMPILE_SCHEMA存储过程原型为: PKG_UTIL.GS_COMPILE_SCHEMA ( schema_name IN VARCHAR2 DEFAULT NULL, compile_all IN BOOLEAN DEFAULT FALSE, retry_times IN INT DEFAULT 10 ) 表64 PKG_UTIL.GS_COMPILE_SCHEMA接口参数说明 参数 类型 入参/出参 是否可以为空 描述 schema_name VARCHAR2 IN 是 命名空间的名称。 compile_all BOOLEAN IN 是 编译所有。 false:编译pg_object表中状态为false的包、函数和存储过程。 true:编译pg_object表中所有的包、函数和存储过程。 retry_times INT IN 是 重试次数。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程调用堆栈。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_CALL_STACK() RETURN TEXT 示例: -- 删除schema drop schema if exists pkg_var_test cascade; -- 创建pkg_var_test create schema pkg_var_test; -- 设置schema和参数 set current_schema = pkg_var_test; -- 创建包 create or replace package test_pkg as referenced_var int; unreferenced_var int; end test_pkg; / -- 创建函数 create or replace function test_func return int is begin return 1; end; / -- 创建存储过程 create or replace procedure test_proc is proc_var int; begin proc_var := 1; end; / -- 重编译pkg_var_test下的包 函数和存储过程 call pkg_util.utility_compile_schema('pkg_var_test'); 或者 call pkg_util.gs_compile_schema(' ',false,2); -- 删掉pkg_var_test drop schema if exists pkg_var_test cascade; PKG_UTIL.APP_SET_MODULE 设置module的值。 PKG_UTIL.APP_SET_MODULE存储过程原型为: PKG_UTIL.APP_SET_MODULE ( str TEXT) RETURNS VOID 表65 PKG_UTIL.APP_SET_MODULE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 text TEXT IN 是 要设置module的值。 示例: CALL PKG_UTIL.APP_SET_MODULE('set module'); app_set_module ---------------- (1 row) PKG_UTIL.APP_READ_MODULE 读取module的值。 PKG_UTIL.APP_READ_MODULE存储过程原型为: PKG_UTIL.APP_READ_MODULE( OUT BUFFER TEXT ) 表66 PKG_UTIL.APP_READ_MODULE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 是 返回的module的值。 示例: DECLARE module VARCHAR2(64); BEGIN PKG_UTIL.APP_READ_MODULE(module); DBE_OUTPUT.PRINT_LINE(module); END; / set module ANONYMOUS BLOCK EXECUTE PKG_UTIL.APP_SET_ACTION 设置action的值。 PKG_UTIL.APP_SET_ACTION存储过程原型为: PKG_UTIL.APP_SET_ACTION ( str TEXT) RETURNS VOID 表67 PKG_UTIL.APP_SET_ACTION接口参数说明 参数 类型 入参/出参 是否可以为空 描述 text TEXT IN 是 要设置action的值。 示例: CALL PKG_UTIL.APP_SET_ACTION('set action'); app_set_action ---------------- (1 row) PKG_UTIL.APP_READ_ACTION 读取action的值。 PKG_UTIL.APP_READ_ACTION存储过程原型为: PKG_UTIL.APP_READ_ACTION( OUT buffer TEXT ) 表68 PKG_UTIL.APP_READ_ACTION接口参数说明 参数 类型 入参/出参 是否可以为空 描述 buffer TEXT OUT 是 返回的action的值。 示例: DECLARE action VARCHAR2(64); BEGIN PKG_UTIL.APP_READ_ACTION(action); DBE_OUTPUT.PRINT_LINE(action); END; / set action ANONYMOUS BLOCK EXECUTE PKG_UTIL.MODIFY_PACKAGE_STATE 用于修改当前会话的PL/SQL的状态。 PKG_UTIL.MODIFY_PACKAGE_STATE存储过程原型为: PKG_UTIL.MODIFY_PACKAGE_STATE ( flags INT) RETURNS VOID 表69 PKG_UTIL.MODIFY_PACKAGE_STATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 flags INT INT 是 对PL/SQL采取的操作的位标志。 当flags=1时,在执行完最顶层的PL/SQL后,会释放会话中目前运行的PL/SQL的会话缓存。清除任何包全局的当前值并关闭缓存的游标。在后续使用时,PL/SQL将重新实例化,并重新初始化包全局。 不支持其他位标志。 示例: CALL PKG_UTIL.MODIFY_PACKAGE_STATE(1); modify_package_state ---------------------- (1 row) 父主题: 基础接口
-
DBE_DESCRIBE DBE_DESCRIBE支持的基础接口请参见表1 DBE_DESCRIBE基础接口说明 表1 DBE_DESCRIBE基础接口说明 接口名称 描述 DBE_DESCRIBE.GET_PROCEDURE_NAME 内部函数,不建议用户使用;从用户的原始输入中提取出存储过程/函数名称。 DBE_DESCRIBE.IS_NUMBER_TYPE 内部函数,不建议用户使用;判断类型是否为数值类型。 DBE_DESCRIBE.GET_PROCEDURE_NAME 内部函数,不建议用户使用。从用户的原始输入中提取出存储过程/函数名称。 DBE_DESCRIBE.GET_PROCEDURE_NAME的函数原型为: 1 2 3 DBE_DESCRIBE.GET_PROCEDURE_NAME( name IN VARCHAR2) RETURNS VARCHAR2; 表2 DBE_DESCRIBE.GET_PROCEDURE_NAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 name VARCHAR2 IN 否 用户输入的实体名称 DBE_DESCRIBE.IS_NUMBER_TYPE 内部函数,不建议用户使用。判断类型是否为数值类型。 DBE_DESCRIBE.IS_NUMBER_TYPE的函数原型为: 1 2 3 DBE_DESCRIBE.IS_NUMBER_TYPE( type_oid IN INTEGER) RETURNS BOOLEAN; 表3 DBE_DESCRIBE.IS_NUMBER_TYPE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 type_oid INTEGER IN 是 类型的OID 父主题: 基础接口
-
DBE_DESCRIBE DBE_DESCRIBE支持的基础接口请参见表1 DBE_DESCRIBE基础接口说明 表1 DBE_DESCRIBE基础接口说明 接口名称 描述 DBE_DESCRIBE.GET_PROCEDURE_NAME 内部函数,不建议用户使用;从用户的原始输入中提取出存储过程/函数名称。 DBE_DESCRIBE.IS_NUMBER_TYPE 内部函数,不建议用户使用;判断类型是否为数值类型。 DBE_DESCRIBE.GET_PROCEDURE_NAME 内部函数,不建议用户使用。从用户的原始输入中提取出存储过程/函数名称。 DBE_DESCRIBE.GET_PROCEDURE_NAME的函数原型为: 1 2 3 DBE_DESCRIBE.GET_PROCEDURE_NAME( name IN VARCHAR2) RETURNS VARCHAR2; 表2 DBE_DESCRIBE.GET_PROCEDURE_NAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 name VARCHAR2 IN 否 用户输入的实体名称 DBE_DESCRIBE.IS_NUMBER_TYPE 内部函数,不建议用户使用。判断类型是否为数值类型。 DBE_DESCRIBE.IS_NUMBER_TYPE的函数原型为: 1 2 3 DBE_DESCRIBE.IS_NUMBER_TYPE( type_oid IN INTEGER) RETURNS BOOLEAN; 表3 DBE_DESCRIBE.IS_NUMBER_TYPE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 type_oid INTEGER IN 是 类型的OID 父主题: 基础接口
-
PKG_SERVICE PKG_SERVICE支持的所有接口请参见表1。 表1 PKG_SERVICE 接口名称 描述 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 确认该CONTEXT是否已注册。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 取消所有注册的CONTEXT。 PKG_SERVICE.SQL_REGISTER_CONTEXT 注册一个CONTEXT。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT 取消注册该CONTEXT。 PKG_SERVICE.SQL_SET_SQL 向CONTEXT设置一条SQL语句,目前只支持SELECT。 PKG_SERVICE.SQL_RUN 在一个CONTEXT上执行设置的SQL语句。 PKG_SERVICE.SQL_NEXT_ROW 读取该CONTEXT中的下一行数据。 PKG_SERVICE.SQL_GET_VALUE 读取该CONTEXT中动态定义的列值 PKG_SERVICE.SQL_SET_RESULT_TYPE 根据类型OID动态定义该CONTEXT的一个列。 PKG_SERVICE.JOB_CANCEL 通过任务ID来删除定时任务。 PKG_SERVICE.JOB_FINISH 禁用或者启用定时任务。 PKG_SERVICE.JOB_SUBMIT 提交一个定时任务。作业号由系统自动生成或由用户指定。 PKG_SERVICE.JOB_UPDATE 修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.SUBMIT_ON_NODES 提交一个任务到所有节点,作业号由系统自动生成。 PKG_SERVICE.ISUBMIT_ON_NODES 提交一个任务到所有节点,作业号由用户指定。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 获取该CONTEXT中返回的数组值。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 获取该CONTEXT中返回的列值。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 该函数用来确认一个CONTEXT是否已注册。该函数传入想查找的CONTEXT ID,如果该CONTEXT存在返回TRUE,反之返回FALSE。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE函数原型为: 1 2 3 4 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; 表2 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 该函数用来取消所有CONTEXT PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS函数原型为: 1 2 3 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS( ) RETURN VOID; PKG_SERVICE.SQL_REGISTER_CONTEXT 该函数用来打开一个CONTEXT,是后续对该CONTEXT进行各项操作的前提。该函数不传入任何参数,内部自动递增生成CONTEXT ID,并作为返回值返回给INTEGER定义的变量。 PKG_SERVICE.SQL_REGISTER_CONTEXT函数原型为: 1 2 3 DBE_SQL.REGISTER_CONTEXT( ) RETURN INTEGER; PKG_SERVICE.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个CONTEXT,是该CONTEXT中各项操作的结束。如果在存储过程结束时没有调用该函数,则该CONTEXT占用的内存仍然会保存,因此关闭CONTEXT非常重要。由于异常情况的发生会中途退出存储过程,导致CONTEXT未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT函数原型为: 1 2 3 4 PKG_SERVICE.SQL_UNREGISTER_CONTEXT( context_id IN INTEGER ) RETURN INTEGER; 表3 PKG_SERVICE.SQL_UNREGISTER_CONTEXT接口说明 参数名称 描述 context_id 打算关闭的CONTEXT ID号。 PKG_SERVICE.SQL_SET_SQL 该函数用来解析给定游标的查询语句,被传入的查询语句会立即执行。目前仅支持SELECT查询语句的解析,且语句参数仅可通过text类型传递,长度不大于1G。 PKG_SERVICE.SQL_SET_SQL函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_SET_SQL( context_id IN INTEGER, query_string IN TEXT, language_flag IN INTEGER ) RETURN BOOLEAN; 表4 PKG_SERVICE.SQL_SET_SQL接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 query_string 执行的查询语句。 language_flag 版本语言号,指定不同版本的行为。 1为非兼容版本。 2为ORA兼容模式版本。 PKG_SERVICE.SQL_RUN 该函数用来执行一个给定的CONTEXT。该函数接收一个CONTEXT ID,运行后获得的数据用于后续操作。目前仅支持SELECT查询语句的执行。 PKG_SERVICE.SQL_RUN函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_RUN( context_id IN INTEGER, ) RETURN INTEGER; 表5 PKG_SERVICE.SQL_RUN接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 PKG_SERVICE.SQL_NEXT_ROW 该函数返回执行SQL实际返回的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。 PKG_SERVICE.SQL_NEXT_ROW函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_NEXT_ROW( context_id IN INTEGER, ) RETURN INTEGER; 表6 PKG_SERVICE.SQL_NEXT_ROW接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 PKG_SERVICE.SQL_GET_VALUE 该函数用来返回给定CONTEXT中给定位置的CONTEXT元素值,该接口访问的是PKG_SERVICE.SQL_NEXT_ROW获取的数据。 PKG_SERVICE.SQL_GET_VALUE函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VALUE( context_id IN INTEGER, pos IN INTEGER, col_type IN ANYELEMENT ) RETURN ANYELEMENT; 表7 PKG_SERVICE.SQL_GET_VALUE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 col_type 任意类型变量,定义列的返回值类型。 PKG_SERVICE.SQL_SET_RESULT_TYPE 该函数用来定义从给定CONTEXT返回的列,该接口只能应用于SELECT定义的CONTEXT中。定义的列通过查询列表的相对位置来标识,PKG_SERVICE.SQL_SET_RESULT_TYPE函数的原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SQL_SET_RESULT_TYPE( context_id IN INTEGER, pos IN INTEGER, coltype_oid IN ANYELEMENT, maxsize IN INTEGER ) RETURN INTEGER; 表8 PKG_SERVICE.SQL_SET_RESULT_TYPE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 coltype_oid 任意类型的变量,可根据变量类型得到对应类型OID。 maxsize 定义的列的长度。 PKG_SERVICE.JOB_CANCEL 存储过程CANCEL删除指定的定时任务。 PKG_SERVICE.JOB_CANCEL函数原型为: 1 2 PKG_SERVICE.JOB_CANCEL( id IN INTEGER); 表9 PKG_SERVICE.JOB_CANCEL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id INTEGER IN 否 指定的作业号。 PKG_SERVICE.JOB_FINISH 存储过程FINISH禁用或者启用定时任务。 PKG_SERVICE.JOB_FINISH函数原型为: 1 2 3 4 PKG_SERVICE.JOB_FINISH( id IN INTEGER, broken IN BOOLEAN, next_time IN TIMESTAMP DEFAULT sysdate); 表10 PKG_SERVICE.JOB_FINISH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id INTEGER IN 否 指定的作业号。 broken BOOLEAN IN 否 状态标志位,TRUE代表禁用,FALSE代表启用。根据TRUE或FALSE值更新当前job;如果为空值,则不改变原有job的状态。 next_time TIMESTAMP IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为TRUE,则更新该参数为'4000-1-1';如果参数broken状态为FALSE,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。 PKG_SERVICE.JOB_SUBMIT 存储过程JOB_SUBMIT提交一个系统提供的定时任务。 PKG_SERVICE.JOB_SUBMIT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.JOB_SUBMIT( id IN BIGINT, content IN TEXT, next_time IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该指定表或者函数的schema,或者在sql语句前添加set current_schema = xxx;语句。 表11 PKG_SERVICE.JOB_SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id BIGINT IN 否 作业号。如果传入id为NULL,则内部会生成作业ID。 content TEXT IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_time TIMESTAMP IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval_time TEXT IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个NUMERIC值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job INTEGER OUT 否 作业号。范围为1~32767。当使用select调用pkg_service.job_submit时,该参数可以省略。 PKG_SERVICE.JOB_UPDATE 存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.JOB_UPDATE函数原型为: 1 2 3 4 5 PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT); 表12 PKG_SERVICE.JOB_UPDATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id INTEGER IN 否 指定的作业号。 next_time TIMESTAMP IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。 interval_time TEXT IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 content TEXT IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。 示例: 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 CREATE TABLE test_table(a int); CREATE TABLE CREATE OR REPLACE PROCEDURE test_job(a in int) IS BEGIN INSERT INTO test_table VALUES(a); COMMIT; END; / CREATE PROCEDURE --PKG_SERVICE.JOB_SUBMIT SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call test_job(1);', to_date('20180101','yyyymmdd'),'sysdate+1'); job_submit ------------ 28269 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call test_job(1);', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); job_submit ------------ 1506 (1 row) CALL PKG_SERVICE.JOB_SUBMIT(NULL, 'INSERT INTO test_table VALUES(1); call test_job(1); call test_job(1);', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); job ------- 14131 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) --PKG_SERVICE.JOB_UPDATE CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'call test_job(1);'); job_update ------------ (1 row) CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'insert into test_table values(1);'); job_update ------------ (1 row) --PKG_SERVICE.JOB_FINISH CALL PKG_SERVICE.JOB_FINISH(101,true); job_finish ------------ (1 row) --PKG_SERVICE.JOB_CANCEL CALL PKG_SERVICE.JOB_CANCEL(101); job_cancel ------------ (1 row) DROP TABLE test_table; DROP TABLE PKG_SERVICE.SUBMIT_ON_NODES 存储过程SUBMIT_ON_NODES创建一个所有CN/DN上的定时任务,仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SUBMIT_ON_NODES函数原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SUBMIT_ON_NODES( node_name IN NAME, database IN NAME, what IN TEXT, next_date IN TIMESTAMP WITHOUT TIME ZONE, job_interval IN TEXT, job OUT INTEGER); 表13 PKG_SERVICE.SUBMIT_ON_NODES接口参数说明 参数 类型 入参/出参 是否可以为空 描述 node_name TEXT IN 否 指定作业的执行节点,当前仅支持值为'ALL_NODE'(在所有节点执行)与'CCN'(在central coordinator执行)。 database TEXT IN 否 集群作业所使用的database,节点类型为'ALL_NODE'时仅支持值为'postgres'。 what TEXT IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 nextdate TIMESTAMP IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 job_interval TEXT IN 否 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个NUMERIC值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd'不再执行。 job INTEGER OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit_on_nodes时,该参数可以省略。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT pkg_service.submit_on_nodes('ALL_NODE', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 12068 (1 row) SELECT pkg_service.submit_on_nodes('CCN', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 9027 (1 row) PKG_SERVICE.ISUBMIT_ON_NODES ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 该函数用来返回绑定的数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_ARRAY_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_ARRAY_RESULT( context_id in int, pos in VARCHAR2, column_value inout anyarray, result_type in anyelement ); 表14 PKG_SERVICE.SQL_GET_ARRAY_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 column_value 返回值。 result_type 返回值类型。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 该函数用来返回绑定的非数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VARIABLE_RESULT( context_id in int, pos in VARCHAR2, result_type in anyelement ) RETURNS anyelement; 表15 PKG_SERVICE.SQL_GET_VARIABLE_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 result_type 返回值类型。 父主题: 基础接口
-
PKG_SERVICE PKG_SERVICE支持的所有接口请参见表1。 表1 PKG_SERVICE 接口名称 描述 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 确认该CONTEXT是否已注册。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 取消所有注册的CONTEXT。 PKG_SERVICE.SQL_REGISTER_CONTEXT 注册一个CONTEXT。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT 取消注册该CONTEXT。 PKG_SERVICE.SQL_SET_SQL 向CONTEXT设置一条SQL语句,目前只支持SELECT。 PKG_SERVICE.SQL_RUN 在一个CONTEXT上执行设置的SQL语句。 PKG_SERVICE.SQL_NEXT_ROW 读取该CONTEXT中的下一行数据。 PKG_SERVICE.SQL_GET_VALUE 读取该CONTEXT中动态定义的列值 PKG_SERVICE.SQL_SET_RESULT_TYPE 根据类型OID动态定义该CONTEXT的一个列。 PKG_SERVICE.JOB_CANCEL 通过任务ID来删除定时任务。 PKG_SERVICE.JOB_FINISH 禁用或者启用定时任务。 PKG_SERVICE.JOB_SUBMIT 提交一个定时任务。作业号由系统自动生成或由用户指定。 PKG_SERVICE.JOB_UPDATE 修改定时任务的属性,包括任务内容、下次执行时间和执行间隔。 PKG_SERVICE.SUBMIT_ON_NODES 提交一个任务到所有节点,作业号由系统自动生成。 PKG_SERVICE.ISUBMIT_ON_NODES 提交一个任务到所有节点,作业号由用户指定。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 获取该CONTEXT中返回的数组值。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 获取该CONTEXT中返回的列值。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 该函数用来确认一个CONTEXT是否已注册。该函数传入想查找的CONTEXT ID,如果该CONTEXT存在返回TRUE,反之返回FALSE。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE函数原型为: 1 2 3 4 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; 表2 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 该函数用来取消所有CONTEXT PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS函数原型为: 1 2 3 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS( ) RETURN VOID; PKG_SERVICE.SQL_REGISTER_CONTEXT 该函数用来打开一个CONTEXT,是后续对该CONTEXT进行各项操作的前提。该函数不传入任何参数,内部自动递增生成CONTEXT ID,并作为返回值返回给integer定义的变量。 PKG_SERVICE.SQL_REGISTER_CONTEXT函数原型为: 1 2 3 DBE_SQL.REGISTER_CONTEXT( ) RETURN INTEGER; PKG_SERVICE.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个CONTEXT,是该CONTEXT中各项操作的结束。如果在存储过程结束时没有调用该函数,则该CONTEXT占用的内存仍然会保存,因此关闭CONTEXT非常重要。由于异常情况的发生会中途退出存储过程,导致CONTEXT未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT函数原型为: 1 2 3 4 PKG_SERVICE.SQL_UNREGISTER_CONTEXT( context_id IN INTEGER ) RETURN INTEGER; 表3 PKG_SERVICE.SQL_UNREGISTER_CONTEXT接口说明 参数名称 描述 context_id 打算关闭的CONTEXT ID号。 PKG_SERVICE.SQL_SET_SQL 该函数用来解析给定游标的查询语句,被传入的查询语句会立即执行。目前仅支持SELECT查询语句的解析,且语句参数仅可通过text类型传递,长度不大于1G。 PKG_SERVICE.SQL_SET_SQL函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_SET_SQL( context_id IN INTEGER, query_string IN TEXT, language_flag IN INTEGER ) RETURN BOOLEAN; 表4 PKG_SERVICE.SQL_SET_SQL接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 query_string 执行的查询语句。 language_flag 版本语言号,指定不同版本的行为。 1为非兼容版本。 2为A兼容模式版本。 PKG_SERVICE.SQL_RUN 该函数用来执行一个给定的CONTEXT。该函数接收一个CONTEXT ID,运行后获得的数据用于后续操作。目前仅支持SELECT查询语句的执行。 PKG_SERVICE.SQL_RUN函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_RUN( context_id IN INTEGER, ) RETURN INTEGER; 表5 PKG_SERVICE.SQL_RUN接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 PKG_SERVICE.SQL_NEXT_ROW 该函数返回执行SQL实际返回的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。 PKG_SERVICE.SQL_NEXT_ROW函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_NEXT_ROW( context_id IN INTEGER, ) RETURN INTEGER; 表6 PKG_SERVICE.SQL_NEXT_ROW接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 PKG_SERVICE.SQL_GET_VALUE 该函数用来返回给定CONTEXT中给定位置的CONTEXT元素值,该接口访问的是PKG_SERVICE.SQL_NEXT_ROW获取的数据。 PKG_SERVICE.SQL_GET_VALUE函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VALUE( context_id IN INTEGER, pos IN INTEGER, col_type IN ANYELEMENT ) RETURN ANYELEMENT; 表7 PKG_SERVICE.SQL_GET_VALUE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 col_type 任意类型变量,定义列的返回值类型。 PKG_SERVICE.SQL_SET_RESULT_TYPE 该函数用来定义从给定CONTEXT返回的列,该接口只能应用于SELECT定义的CONTEXT中。定义的列通过查询列表的相对位置来标识,PKG_SERVICE.SQL_SET_RESULT_TYPE函数的原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SQL_SET_RESULT_TYPE( context_id IN INTEGER, pos IN INTEGER, coltype_oid IN ANYELEMENT, maxsize IN INTEGER ) RETURN INTEGER; 表8 PKG_SERVICE.SQL_SET_RESULT_TYPE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 coltype_oid 任意类型的变量,可根据变量类型得到对应类型OID。 maxsize 定义的列的长度。 PKG_SERVICE.JOB_CANCEL 存储过程CANCEL删除指定的定时任务。 PKG_SERVICE.JOB_CANCEL函数原型为: 1 2 PKG_SERVICE.JOB_CANCEL( id IN INTEGER); 表9 PKG_SERVICE.JOB_CANCEL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 PKG_SERVICE.JOB_FINISH 存储过程FINISH禁用或者启用定时任务。 PKG_SERVICE.JOB_FINISH函数原型为: 1 2 3 4 PKG_SERVICE.JOB_FINISH( id IN INTEGER, broken IN BOOLEAN, next_time IN TIMESTAMP DEFAULT sysdate); 表10 PKG_SERVICE.JOB_FINISH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 broken boolean IN 否 状态标志位,true代表禁用,false代表启用。根据true或false值更新当前job;如果为空值,则不改变原有job的状态。 next_time timestamp IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。 PKG_SERVICE.JOB_SUBMIT 存储过程JOB_SUBMIT提交一个系统提供的定时任务。 PKG_SERVICE.JOB_SUBMIT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.JOB_SUBMIT( id IN BIGINT, content IN TEXT, next_time IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的SQL语句任务使用到非public的schema,应该指定表或者函数的schema,或者在SQL语句前添加set current_schema = xxx;语句。 表11 PKG_SERVICE.JOB_SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id bigint IN 否 作业号。如果传入id为NULL,则内部会生成作业ID。 content text IN 否 要执行的SQL语句。支持一个或多个DML、匿名块、调用存储过程的语句或3种混合的场景。 next_time timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用pkg_service.job_submit时,该参数可以省略。 PKG_SERVICE.JOB_UPDATE 存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.JOB_UPDATE函数原型为: 1 2 3 4 5 PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT); 表12 PKG_SERVICE.JOB_UPDATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 next_time timestamp IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 content text IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。 示例: 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 CREATE TABLE test_table(a int); CREATE TABLE CREATE OR REPLACE PROCEDURE test_job(a in int) IS BEGIN INSERT INTO test_table VALUES(a); COMMIT; END; / CREATE PROCEDURE --PKG_SERVICE.JOB_SUBMIT SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call test_job(1);', to_date('20180101','yyyymmdd'),'sysdate+1'); job_submit ------------ 28269 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call test_job(1);', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); job_submit ------------ 1506 (1 row) CALL PKG_SERVICE.JOB_SUBMIT(NULL, 'INSERT INTO test_table VALUES(1); call test_job(1); call test_job(1);', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); job ------- 14131 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) --PKG_SERVICE.JOB_UPDATE CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'call test_job(1);'); job_update ------------ (1 row) CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'insert into test_table values(1);'); job_update ------------ (1 row) --PKG_SERVICE.JOB_FINISH CALL PKG_SERVICE.JOB_FINISH(101,true); job_finish ------------ (1 row) --PKG_SERVICE.JOB_CANCEL CALL PKG_SERVICE.JOB_CANCEL(101); job_cancel ------------ (1 row) DROP TABLE test_table; DROP TABLE PKG_SERVICE.SUBMIT_ON_NODES 存储过程SUBMIT_ON_NODES创建一个节点上的定时任务,仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SUBMIT_ON_NODES函数原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SUBMIT_ON_NODES( node_name IN NAME, database IN NAME, what IN TEXT, next_date IN TIMESTAMP WITHOUT TIME ZONE, job_interval IN TEXT, job OUT INTEGER); 表13 PKG_SERVICE.SUBMIT_ON_NODES接口参数说明 参数 类型 入参/出参 是否可以为空 描述 node_name text IN 否 指定作业的执行节点,当前仅支持值为'ALL_NODE'(在所有节点执行)。 database text IN 否 数据库实例作业所使用的database,节点类型为'ALL_NODE'时仅支持值为'postgres'。 what text IN 否 要执行的SQL语句。支持一个或多个“DML”、“匿名块”、“调用存储过程的语句”或3种混合的场景。 nextdate timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 job_interval text IN 否 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串“NULL”表示只执行一次,执行后JOB状态STATUS变成'd'不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit_on_nodes时,该参数可以省略。 示例: 1 2 3 4 5 SELECT pkg_service.submit_on_nodes('ALL_NODE', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 25376 (1 row) PKG_SERVICE.ISUBMIT_ON_NODES ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 该函数用来返回绑定的数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_ARRAY_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_ARRAY_RESULT( context_id in int, pos in VARCHAR2, column_value inout anyarray, result_type in anyelement ); 表14 PKG_SERVICE.SQL_GET_ARRAY_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 column_value 返回值。 result_type 返回值类型。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 该函数用来返回绑定的非数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VARIABLE_RESULT( context_id in int, pos in VARCHAR2, result_type in anyelement ) RETURNS anyelement; 表15 PKG_SERVICE.SQL_GET_VARIABLE_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 result_type 返回值类型。 父主题: 基础接口
-
PKG_UTIL PKG_UTIL支持的所有接口请参见表1: 表1 PKG_UTIL 接口名称 描述 PKG_UTIL.LOB_GET_LENGTH 获取lob的长度。 PKG_UTIL.LOB_READ 读取lob对象的一部分。 PKG_UTIL.LOB_WRITE 将源对象按照指定格式写入到目标对象。 PKG_UTIL.LOB_APPEND 将lob源对象指定个数的字符追加到目标lob对象。 PKG_UTIL.LOB_COMPARE 根据指定长度比较两个lob对象。 PKG_UTIL.LOB_MATCH 返回一个字符串在LOB中第N次出现的位置。 PKG_UTIL.LOB_RESET 将lob的指定位置重置为指定字符。 PKG_UTIL.IO_PRINT 将字符串打印输出。 PKG_UTIL.RAW_GET_LENGTH 获取raw的长度。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 将binary integer转化为raw。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 将raw转化为binary integer。 PKG_UTIL.RANDOM_SET_SEED 设置随机种子。 PKG_UTIL.RANDOM_GET_VALUE 返回随机值。 PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录。 PKG_UTIL.FILE_OPEN 根据指定文件名和设置的目录打开一个文件。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_READ 从一个打开的文件句柄中读取指定长度的数据。 PKG_UTIL.FILE_READLINE 从一个打开的文件句柄中读取一行数据。 PKG_UTIL.FILE_WRITE 将BUFFER中的数据写入到文件中。 PKG_UTIL.FILE_WRITELINE 将BUFFER写入文件,并追加换行符。 PKG_UTIL.FILE_NEWLINE 新起一行。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据。 PKG_UTIL.FILE_WRITE_RAW 将二进制数据写入到文件中。 PKG_UTIL.FILE_FLUSH 将一个文件句柄中的数据写入到物理文件中。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个物理文件,操作需要有对应权限。 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似UNIX的mv。 PKG_UTIL.FILE_SIZE 返回文件大小。 PKG_UTIL.FILE_BLOCK_SIZE 返回文件含有的块数量。 PKG_UTIL.FILE_EXISTS 判断文件是否存在。 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_SEEK 设置文件位置为指定偏移。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有文件句柄。 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.LOB_GET_LENGTH 该函数LOB_GET_LENGTH获取输入数据的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.LOB_GET_LENGTH( lob IN anyelement ) RETURN INTEGER; 表2 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 待获取长度的对象。 PKG_UTIL.LOB_READ 该函数LOB_READ读取一个对象,并返回指定部分。 PKG_UTIL.LOB_READ函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_READ( lob IN anyelement, len IN int, start IN int, mode IN int ) RETURN ANYELEMENT 表3 PKG_UTIL.LOB_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 clob或者blob类型数据。 len int IN 否 返回结果长度。 start int IN 否 相较于第一个字符的偏移量。 mode int IN 否 判断读取操作的类型, 0 :read; 1 : trim; 2 : substr。 PKG_UTIL.LOB_WRITE 该函数LOB_WRITE将源对象按照指定的参数写入目标对象,并返回目标对象。 PKG_UTIL.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PKG_UTIL.LOB_WRITE( dest_lob INOUT blob, src_lob IN raw len IN int, start_pos IN int ) RETURN BLOB; PKG_UTIL.LOB_WRITE( dest_lob INOUT clob, src_lob IN varchar2 len IN int, start_pos IN int ) RETURN CLOB; 表4 PKG_UTIL.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob clob/blob INOUT 否 写入的目标对象。 src_lob clob/blob IN 否 被写入的源对象。 len int IN 否 源对象的写入长度。 start_pos int IN 否 目标对象的写入起始位置。 PKG_UTIL.LOB_APPEND 该函数LOB_APPEND将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_APPEND( dest_lob INOUT blob, src_lob IN blob, len IN int default NULL ) RETURN BLOB; PKG_UTIL.LOB_APPEND( dest_lob INOUT clob, src_lob IN clob, len IN int default NULL ) RETURN CLOB; 表5 PKG_UTIL.LOB_APPEND接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob blob/clob INOUT 否 写入的目标blob/clob对象。 src_lob blob/clob IN 否 被写入的源blob/clob对象。 len int IN 是 写入源对象的长度,为NULL则默认写入源对象全部。 PKG_UTIL.LOB_COMPARE 该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同,lob1大则返回1,lob2大返回-1,相等返回0。 PKG_UTIL.LOB_COMPARE函数原型为: 1 2 3 4 5 6 7 8 PKG_UTIL.LOB_COMPARE( lob1 IN anyelement, lob2 IN anyelement, len IN int default 1073741771, start_pos1 IN int default 1, start_pos2 IN int default 1 ) RETURN INTEGER; 表6 PKG_UTIL.LOB_COMPARE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob1 clob/blob IN 否 待比较的字符串。 lob2 clob/blob IN 否 待比较的字符串。 len int IN 否 比较的长度。 start_pos1 int IN 否 lob1起始偏移量。 start_pos2 int IN 否 lob2起始偏移量。 PKG_UTIL.LOB_MATCH 该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。 PKG_UTIL.LOB_MATCH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_MATCH( lob IN anyelement, pattern IN anyelement, start IN int, match_nth IN int default 1 ) RETURN INTEGER; 表7 PKG_UTIL.LOB_MATCH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 待比较的字符串。 pattern clob/blob IN 否 待匹配的pattern。 start int IN 否 lob的起始比较位置。 match_nth int IN 否 第几次匹配到。 PKG_UTIL.LOB_RESET 该函数LOB_RESET清除一段数据为字符value。 PKG_UTIL.LOB_RESET函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_RESET( lob IN blob, len IN int, start IN int, value IN int default 0 ) RETURN record; 表8 PKG_UTIL.LOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob blob IN 否 待重置的字符串。 len int IN 否 重置的长度。 start int IN 否 重置的起始位置。 value int IN 是 设置的字符。默认值‘0’。 PKG_UTIL.IO_PRINT 该函数IO_PRINT将一段字符串打印输出。 PKG_UTIL.IO_PRINT函数原型为: 1 2 3 4 5 PKG_UTIL.IO_PRINT( format IN text, is_one_line IN boolean ) RETURN void; 表9 PKG_UTIL.IO_PRINT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 format text IN 否 待打印输出的字符串。 is_one_line boolean IN 否 是否输出为一行。 PKG_UTIL.RAW_GET_LENGTH 该函数RAW_GET_LENGTH获取raw的长度。 PKG_UTIL.RAW_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.RAW_GET_LENGTH( value IN raw ) RETURN integer; 表10 PKG_UTIL.RAW_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 raw raw IN 否 待获取长度的对象。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 该函数RAW_CAST_FROM_VARCHAR2将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_FROM_VARCHAR2( str IN varchar2 ) RETURN raw; 表11 PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str varchar2 IN 否 需要转化的源数据。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER( value IN BIGINT, endianess IN INTEGER ) RETURN RAW; 表12 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value BIGINT IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,当前支持1或2(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN)。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER( value IN RAW, endianess IN INTEGER ) RETURN INTEGER; 表13 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value RAW IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,当前支持1或2(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN)。 PKG_UTIL.RANDOM_SET_SEED 该函数RANDOM_SET_SEED设置随机数种子。 PKG_UTIL.RANDOM_SET_SEED函数原型为: 1 2 3 4 PKG_UTIL.RANDOM_SET_SEED( seed IN int ) RETURN integer; 表14 PKG_UTIL.RANDOM_SET_SEED接口参数说明 参数 类型 入参/出参 是否可以为空 描述 seed int IN 否 随机数种子。 PKG_UTIL.RANDOM_GET_VALUE 该函数RANDOM_GET_VALUE返回0~1区间的一个随机数,其有效数字为15位。 PKG_UTIL.RANDOM_GET_VALUE函数原型为: 1 2 3 PKG_UTIL.RANDOM_GET_VALUE( ) RETURN numeric; PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录,基本上所有涉及单个目录的操作,都需要调用此方法先设置操作的目录。 PKG_UTIL.FILE_SET_DIRNAME函数原型为: 1 2 3 4 PKG_UTIL.FILE_SET_DIRNAME( dir IN text ) RETURN bool 表15 PKG_UTIL.FILE_SET_DIRNAME接口参数说明 参数 描述 dirname 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误, 下面的涉及location作为参数的函数也是同样的情况。 PKG_UTIL.FILE_OPEN 该函数用来打开一个文件,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 PKG_UTIL.FILE_OPEN函数原型为: 1 2 3 PKG_UTIL.FILE_OPEN( file_name IN text, open_mode IN integer) 表16 PKG_UTIL.FILE_OPEN接口参数说明 参数 描述 file_name 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在UNIX系统中,文件名不能以/.结尾。 open_mode 指定文件的打开模式,包含r:read text,w: write text和a: append text。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为: 1 2 3 PKG_UTIL.FILE_SET_MAX_LINE_SIZE( max_line_size in integer) RETURN BOOL 表17 PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 参数 描述 max_line_size 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_IS_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_IS_CLOSE( file in integer ) RETURN BOOL 表18 PKG_UTIL.FILE_IS_CLOSE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_READ 根据指定的长度从一个打开的文件句柄中读取出数据。 PKG_UTIL.FILE_READ函数原型为: 1 2 3 4 PKG_UTIL.FILE_READ( file IN integer, buffer OUT text, len IN bigint default 1024) 表19 PKG_UTIL.FILE_READ接口参数说明 参数 描述 file 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 用于接收数据的BUFFER。 len 从文件中读取的字节数。 PKG_UTIL.FILE_READLINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 PKG_UTIL.FILE_READLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_READLINE( file IN integer, buffer OUT text, len IN integer default NULL) 表20 PKG_UTIL.FILE_READLINE接口参数说明 参数 描述 file 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 用于接收数据的BUFFER。 len 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_line_size来指定大小。 PKG_UTIL.FILE_WRITE 将BUFFER中指定的数据写入到文件中。 PKG_UTIL.FILE_WRITE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE( file in integer, buffer in text ) RETURN BOOL 表21 PKG_UTIL.FILE_WRITE接口参数说明 参数 描述 file 一个打开的文件句柄。 buffer 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_NEWLINE 向一个打开的文件中写入一个行终结符。行终结符和平台相关。 PKG_UTIL.FILE_NEWLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_NEWLINE( file in integer ) RETURN BOOL 表22 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_WRITELINE 向一个打开的文件中写入一行。 PKG_UTIL.FILE_WRITELINE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITELINE( file in integer, buffer in text ) RETURN BOOL 表23 PKG_UTIL.FILE_WRITELINE接口参数说明 参数 描述 file 一个打开的文件句柄。 buffer 要写入的内容 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据,返回读取的二进制数据,返回类型为raw。 PKG_UTIL.FILE_READ_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_READ_RAW( file in integer, length in integer default NULL ) RETURN raw 表24 PKG_UTIL.FILE_READ_RAW接口参数说明 参数 描述 file 一个打开的文件句柄。 length 要读取的长度,默认为NULL。默认情况下读取文件中所有数据,最大为1G。 PKG_UTIL.FILE_WRITE_RAW 向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。 PKG_UTIL.FILE_WRITE_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE_RAW( file in integer, r in raw ) RETURN BOOL 表25 PKG_UTIL.FILE_WRITE_RAW接口参数说明 参数 描述 file 一个打开的文件句柄。 r 准备传入文件的数据 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 PKG_UTIL.FILE_FLUSH函数原型为: 1 2 3 4 PKG_UTIL.FILE_FLUSH( file in integer ) RETURN VOID 表26 PKG_UTIL.FILE_FLUSH接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_CLOSE( file in integer ) RETURN BOOL 表27 PKG_UTIL.FILE_CLOSE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个磁盘文件,操作的时候需要有充分的权限。 PKG_UTIL.FILE_REMOVE函数原型为: 1 2 3 4 PKG_UTIL.FILE_REMOVE( file_name in text ) RETURN VOID 表28 PKG_UTIL.FILE_REMOVE接口参数说明 参数 描述 filen_ame 要删除的文件名 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似UNIX的mv。 PKG_UTIL.FILE_RENAME函数原型为: 1 2 3 4 5 6 PKG_UTIL.FILE_RENAME( src_dir in text, src_file_name in text, dest_dir in text, dest_file_name in text, overwrite boolean default false) 表29 PKG_UTIL.FILE_RENAME接口参数说明 参数 描述 src_dir 源文件目录(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 src_file_name 源文件名。 dest_dir 目标文件目录(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 dest_file_name 目标文件名。 overwrite 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 PKG_UTIL.FILE_SIZE 返回指定的文件大小。 PKG_UTIL.FILE_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_SIZE( file_name in text )return bigint 表30 PKG_UTIL.FILE_SIZE接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_BLOCK_SIZE 返回指定的文件含有的块数量。 PKG_UTIL.FILE_BLOCK_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_BLOCK_SIZE( file_name in text )return bigint 表31 PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_EXISTS 判断指定的文件是否存在。 PKG_UTIL.FILE_EXISTS函数原型为: 1 2 3 4 PKG_UTIL.FILE_EXISTS( file_name in text ) RETURN BOOL 表32 PKG_UTIL.FILE_EXISTS接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_GETPOS函数原型为: 1 2 3 4 PKG_UTIL.FILE_GETPOS( file in integer ) RETURN BIGINT 表33 PKG_UTIL.FILE_GETPOS接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 PKG_UTIL.FILE_SEEK函数原型为: 1 2 3 4 5 void PKG_UTIL.FILE_SEEK( file in integer, start in bigint ) RETURN VOID 表34 PKG_UTIL.FILE_SEEK接口参数说明 参数 描述 file 一个打开的文件句柄。 start 文件偏移,字节。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 PKG_UTIL.FILE_CLOSE_ALL函数原型为: PKG_UTIL.FILE_CLOSE_ALL( ) RETURN VOID↵ 表35 PKG_UTIL.FILE_CLOSE_ALL接口参数说明 参数 描述 无 无 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为: 1 2 3 4 5 6 PKG_UTIL.EXCEPTION_REPORT_ERROR( code integer, log text, flag boolean DEFAULT false ) RETURN INTEGER 表36 PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 参数 描述 code 抛出异常所打印的错误码。 log 抛出异常所打印的日志提示信息。 flag 保留字段,默认为false。 PKG_UTIL.app_read_client_info 读取client_info信息 PKG_UTIL.app_read_client_info函数原型为: 1 2 3 PKG_UTIL.app_read_client_info( OUT buffer text )return text 表37 PKG_UTIL.app_read_client_info接口参数说明 参数 描述 buffer 返回的client_info信息 PKG_UTIL.app_set_client_info 设置client_info信息 PKG_UTIL.app_set_client_info函数原型为: 1 2 3 PKG_UTIL.app_set_client_info( str text ) 表38 PKG_UTIL.app_set_client_info接口参数说明 参数 描述 str 要设置的client_info信息 PKG_UTIL.lob_converttoblob 将clob转成blob,amout为要转换的长度 PKG_UTIL.lob_converttoblob函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.lob_converttoblob( dest_lob blob, src_clob clob, amount integer, dest_offset integer, src_offset integer )return raw 表39 PKG_UTIL.lob_converttoblob接口参数说明 参数 描述 dest_lob 目标lob src_clob 要转换的clob amount 转换的长度 dest_offset 目标lob的起始位置 src_offset 源clob的起始位置 PKG_UTIL.lob_converttoclob 将blob转成clob,amout为要转换的长度 PKG_UTIL.lob_converttoclob函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.lob_converttoclob( dest_lob clob, src_blob blob, amount integer, dest_offset integer, src_offset integer )return text 表40 PKG_UTIL.lob_converttoclob接口参数说明 参数 描述 dest_lob 目标lob src_blob 要转换的blob amount 转换的长度 dest_offset 目标lob的起始位置 src_offset 源clob的起始位置 PKG_UTIL.lob_texttoraw 将text转成raw PKG_UTIL.lob_texttoraw函数原型为: 1 2 3 4 PKG_UTIL.lob_texttoraw( src_lob clob ) RETURN raw 表41 PKG_UTIL.lob_texttoraw接口参数说明 参数 描述 src_lob 要转换的lob数据 PKG_UTIL.match_edit_distance_similarity 计算两个字符串的差别 PKG_UTIL.match_edit_distance_similarity函数原型为: 1 2 3 4 5 PKG_UTIL.match_edit_distance_similarity( str1 text, str2 text ) RETURN INTEGER 表42 PKG_UTIL.match_edit_distance_similarity接口参数说明 参数 描述 str1 第一个字符串 str2 第二个字符串 PKG_UTIL.raw_cast_to_varchar2 raw类型转成varchar2。 PKG_UTIL.raw_cast_to_varchar2函数原型为: 1 2 3 4 PKG_UTIL.raw_cast_to_varchar2( str raw ) RETURN varchar2 表43 PKG_UTIL.raw_cast_to_varchar2接口参数说明 参数 描述 str 十六进制字符串 PKG_UTIL.session_clear_context 清除session_context信息 PKG_UTIL.session_clear_context函数原型为: 1 2 3 4 5 6 PKG_UTIL.session_clear_context( namespace text, client_identifier text, attribute text ) RETURN INTEGER 表44 PKG_UTIL.session_clear_context接口参数说明 参数 描述 namespace 属性的命名空间 client_identifier client_identifier,一般与namespace即可,当为null时,默认修改所有namesapce attribute 要清除的属性值 PKG_UTIL.session_search_context 查找属性值 PKG_UTIL.session_clear_context函数原型为: 1 2 3 4 5 PKG_UTIL.session_clear_context( namespace text, attribute text ) RETURN INTEGER 表45 PKG_UTIL.session_clear_context接口参数说明 参数 描述 namespace 属性的命名空间 attribute 要清除的属性值 PKG_UTIL.session_set_context 设置属性值 PKG_UTIL.session_set_context函数原型为: 1 2 3 4 5 6 PKG_UTIL.session_set_context( namespace text, attribute text, value text ) RETURN INTEGER 表46 PKG_UTIL.session_set_context接口参数说明 参数 描述 namespace 属性的命名空间 attribute 要设置的属性 value 属性对应的值 PKG_UTIL.utility_get_time 打印UNIX时间戳。 PKG_UTIL.utility_get_time函数原型为: 1 2 PKG_UTIL.utility_get_time() RETURN bigint PKG_UTIL.utility_format_error_backtrace 查看存储过程的错误堆栈。 PKG_UTIL.utility_format_error_backtrace函数原型为: 1 2 PKG_UTIL.utility_format_error_backtrace() RETURN text PKG_UTIL.utility_format_error_stack 查看存储过程的报错信息。 PKG_UTIL.utility_format_error_stack函数原型为: 1 2 PKG_UTIL.utility_format_error_stack() RETURN text PKG_UTIL.utility_format_call_stack 查看存储过程调用堆栈。 PKG_UTIL.utility_format_call_stack函数原型为: 1 2 PKG_UTIL.utility_format_call_stack() RETURN text 父主题: 基础接口
-
PKG_SERVICE PKG_SERVICE支持的所有接口请参见表1。 表1 PKG_SERVICE 接口名称 描述 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 确认该CONTEXT是否已注册。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 取消所有注册的CONTEXT。 PKG_SERVICE.SQL_REGISTER_CONTEXT 注册一个CONTEXT。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT 取消注册该CONTEXT。 PKG_SERVICE.SQL_SET_SQL 向CONTEXT设置一条SQL语句,目前只支持SELECT。 PKG_SERVICE.SQL_RUN 在一个CONTEXT上执行设置的SQL语句。 PKG_SERVICE.SQL_NEXT_ROW 读取该CONTEXT中的下一行数据。 PKG_SERVICE.SQL_GET_VALUE 读取该CONTEXT中动态定义的列值 PKG_SERVICE.SQL_SET_RESULT_TYPE 根据类型OID动态定义该CONTEXT的一个列。 PKG_SERVICE.JOB_CANCEL 通过任务ID来删除定时任务。 PKG_SERVICE.JOB_FINISH 禁用或者启用定时任务。 PKG_SERVICE.JOB_SUBMIT 提交一个定时任务。作业号由系统自动生成或由用户指定。 PKG_SERVICE.JOB_UPDATE 修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.SUBMIT_ON_NODES 提交一个任务到所有节点,作业号由系统自动生成。 PKG_SERVICE.ISUBMIT_ON_NODES 提交一个任务到所有节点,作业号由用户指定。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 获取该CONTEXT中返回的数组值。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 获取该CONTEXT中返回的列值。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 该函数用来确认一个CONTEXT是否已注册。该函数传入想查找的CONTEXT ID,如果该CONTEXT存在返回TRUE,反之返回FALSE。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE函数原型为: 1 2 3 4 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; 表2 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 该函数用来取消所有CONTEXT PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS函数原型为: 1 2 3 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS( ) RETURN VOID; PKG_SERVICE.SQL_REGISTER_CONTEXT 该函数用来打开一个CONTEXT,是后续对该CONTEXT进行各项操作的前提。该函数不传入任何参数,内部自动递增生成CONTEXT ID,并作为返回值返回给integer定义的变量。 PKG_SERVICE.SQL_REGISTER_CONTEXT函数原型为: 1 2 3 DBE_SQL.REGISTER_CONTEXT( ) RETURN INTEGER; PKG_SERVICE.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个CONTEXT,是该CONTEXT中各项操作的结束。如果在存储过程结束时没有调用该函数,则该CONTEXT占用的内存仍然会保存,因此关闭CONTEXT非常重要。由于异常情况的发生会中途退出存储过程,导致CONTEXT未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT函数原型为: 1 2 3 4 PKG_SERVICE.SQL_UNREGISTER_CONTEXT( context_id IN INTEGER ) RETURN INTEGER; 表3 PKG_SERVICE.SQL_UNREGISTER_CONTEXT接口说明 参数名称 描述 context_id 打算关闭的CONTEXT ID号 PKG_SERVICE.SQL_SET_SQL 该函数用来解析给定游标的查询语句,被传入的查询语句会立即执行。目前仅支持SELECT查询语句的解析,且语句参数仅可通过text类型传递,长度不大于1G。 PKG_SERVICE.SQL_SET_SQL函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_SET_SQL( context_id IN INTEGER, query_string IN TEXT, language_flag IN INTEGER ) RETURN BOOLEAN; 表4 PKG_SERVICE.SQL_SET_SQL接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID query_string 执行的查询语句 language_flag 版本语言号,目前只支持1 PKG_SERVICE.SQL_RUN 该函数用来执行一个给定的CONTEXT。该函数接收一个CONTEXT ID,运行后获得的数据用于后续操作。目前仅支持SELECT查询语句的执行。 PKG_SERVICE.SQL_RUN函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_RUN( context_id IN INTEGER, ) RETURN INTEGER; 表5 PKG_SERVICE.SQL_RUN接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID PKG_SERVICE.SQL_NEXT_ROW 该函数返回执行SQL实际返回的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。 PKG_SERVICE.SQL_NEXT_ROW函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_NEXT_ROW( context_id IN INTEGER, ) RETURN INTEGER; 表6 PKG_SERVICE.SQL_NEXT_ROW接口说明 参数名称 描述 context_id 执行的CONTEXT ID PKG_SERVICE.SQL_GET_VALUE 该函数用来返回给定CONTEXT中给定位置的CONTEXT元素值,该接口访问的是PKG_SERVICE.SQL_NEXT_ROW获取的数据。 PKG_SERVICE.SQL_GET_VALUE函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VALUE( context_id IN INTEGER, pos IN INTEGER, col_type IN ANYELEMENT ) RETURN ANYELEMENT; 表7 PKG_SERVICE.SQL_GET_VALUE接口说明 参数名称 描述 context_id 执行的CONTEXT ID pos 动态定义列在查询中的位置 col_type 任意类型变量,定义列的返回值类型 PKG_SERVICE.SQL_SET_RESULT_TYPE 该函数用来定义从给定CONTEXT返回的列,该接口只能应用于SELECT定义的CONTEXT中。定义的列通过查询列表的相对位置来标识,PKG_SERVICE.SQL_SET_RESULT_TYPE函数的原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SQL_SET_RESULT_TYPE( context_id IN INTEGER, pos IN INTEGER, coltype_oid IN ANYELEMENT, maxsize IN INTEGER ) RETURN INTEGER; 表8 PKG_SERVICE.SQL_SET_RESULT_TYPE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 coltype_oid 任意类型的变量,可根据变量类型得到对应类型OID。 maxsize 定义的列的长度。 PKG_SERVICE.JOB_CANCEL 存储过程CANCEL删除指定的定时任务。 PKG_SERVICE.JOB_CANCEL函数原型为: 1 2 PKG_SERVICE.JOB_CANCEL( job IN INTEGER); 表9 PKG_SERVICE.JOB_CANCEL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 示例: SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) CALL PKG_SERVICE.JOB_CANCEL(101); job_cancel ------------ (1 row) PKG_SERVICE.JOB_FINISH 存储过程FINISH禁用或者启用定时任务。 PKG_SERVICE.JOB_FINISH函数原型为: 1 2 3 4 PKG_SERVICE.JOB_FINISH( id IN INTEGER, broken IN BOOLEAN, next_time IN TIMESTAMP DEFAULT sysdate); 表10 PKG_SERVICE.JOB_FINISH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 broken Boolean IN 否 状态标志位,true代表禁用,false代表启用。根据true或false值更新当前job;如果为空值,则不改变原有job的状态。 next_time timestamp IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。 PKG_SERVICE.JOB_SUBMIT 存储过程JOB_SUBMIT提交一个系统提供的定时任务。 PKG_SERVICE.JOB_SUBMIT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.JOB_SUBMIT( id IN BIGINT, content IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该指定表或者函数的schema,或者在sql语句前添加set current_schema = xxx;语句。 表11 PKG_SERVICE.JOB_SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id bigint IN 否 作业号。如果传入id为NULL,则内部会生成作业ID。 context text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_time timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用pkg_service.job_submit时,该参数可以省略。 示例: 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 CREATE TABLE test_table(a int); CREATE TABLE CREATE OR REPLACE PROCEDURE test_job(a in int) IS BEGIN INSERT INTO test_table VALUES(a); COMMIT; END; / CREATE PROCEDURE SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1'); job_submit ------------ 28269 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); job_submit ------------ 1506 (1 row) CALL PKG_SERVICE.JOB_SUBMIT(NULL, 'INSERT INTO T_JOB VALUES(1); call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); job ------- 14131 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) PKG_SERVICE.JOB_UPDATE 存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.JOB_UPDATE函数原型为: 1 2 3 4 5 PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT); 表12 PKG_SERVICE.JOB_UPDATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 next_time timestamp IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 content text IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。 示例: 1 2 3 4 5 6 7 8 9 10 CALL PKG_SERVICE.JOB_UPDATE(101, 'call userproc();', sysdate, 'sysdate + 1.0/1440'); job_update ------------ (1 row) CALL PKG_SERVICE.JOB_UPDATE(101, 'insert into tbl_a values(sysdate);', sysdate, 'sysdate + 1.0/1440'); job_update ------------ (1 row) PKG_SERVICE.SUBMIT_ON_NODES 存储过程SUBMIT_ON_NODES创建一个节点上的定时任务,仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SUBMIT_ON_NODES函数原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SUBMIT_ON_NODES( node_name IN NAME, database IN NAME, what IN TEXT, next_date IN TIMESTAMP WITHOUT TIME ZONE, job_interval IN TEXT, job OUT INTEGER); 表13 PKG_SERVICE.SUBMIT_ON_NODES接口参数说明 参数 类型 入参/出参 是否可以为空 描述 node_name text IN 否 指定作业的执行节点,当前仅支持值为'ALL_NODE'(在所有节点执行)与'CCN'(注:CCN在集中式环境下无意义)。 database text IN 否 数据库实例作业所使用的database,节点类型为'ALL_NODE'时仅支持值为'postgres'。 what text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 nextdate timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 job_interval text IN 否 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd'不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit_on_nodes时,该参数可以省略。 示例: 1 2 3 4 5 SELECT pkg_service.submit_on_nodes('ALL_NODE', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 25376 (1 row) PKG_SERVICE.ISUBMIT_ON_NODES ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 该函数用来返回绑定的数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_ARRAY_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_ARRAY_RESULT( context_id in int, pos in VARCHAR2, column_value inout anyarray, result_type in anyelement ); 表14 PKG_SERVICE.SQL_GET_ARRAY_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 column_value 返回值。 result_type 返回值类型。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 该函数用来返回绑定的非数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VARIABLE_RESULT( context_id in int, pos in VARCHAR2, result_type in anyelement ) RETURNS anyelement; 表15 PKG_SERVICE.SQL_GET_VARIABLE_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 result_type 返回值类型。 父主题: 基础接口
-
PKG_SERVICE PKG_SERVICE支持的所有接口请参见表1。 表1 PKG_SERVICE 接口名称 描述 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 确认该CONTEXT是否已注册。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 取消所有注册的CONTEXT。 PKG_SERVICE.SQL_REGISTER_CONTEXT 注册一个CONTEXT。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT 取消注册该CONTEXT。 PKG_SERVICE.SQL_SET_SQL 向CONTEXT设置一条SQL语句,目前只支持SELECT。 PKG_SERVICE.SQL_RUN 在一个CONTEXT上执行设置的SQL语句。 PKG_SERVICE.SQL_NEXT_ROW 读取该CONTEXT中的下一行数据。 PKG_SERVICE.SQL_GET_VALUE 读取该CONTEXT中动态定义的列值 PKG_SERVICE.SQL_SET_RESULT_TYPE 根据类型OID动态定义该CONTEXT的一个列。 PKG_SERVICE.JOB_CANCEL 通过任务ID来删除定时任务。 PKG_SERVICE.JOB_FINISH 禁用或者启用定时任务。 PKG_SERVICE.JOB_SUBMIT 提交一个定时任务。作业号由系统自动生成或由用户指定。 PKG_SERVICE.JOB_UPDATE 修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.SUBMIT_ON_NODES 提交一个任务到所有节点,作业号由系统自动生成。 PKG_SERVICE.ISUBMIT_ON_NODES 提交一个任务到所有节点,作业号由用户指定。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 获取该CONTEXT中返回的数组值。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 获取该CONTEXT中返回的列值。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 该函数用来确认一个CONTEXT是否已注册。该函数传入想查找的CONTEXT ID,如果该CONTEXT存在返回TRUE,反之返回FALSE。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE函数原型为: 1 2 3 4 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; 表2 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 该函数用来取消所有CONTEXT PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS函数原型为: 1 2 3 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS( ) RETURN VOID; PKG_SERVICE.SQL_REGISTER_CONTEXT 该函数用来打开一个CONTEXT,是后续对该CONTEXT进行各项操作的前提。该函数不传入任何参数,内部自动递增生成CONTEXT ID,并作为返回值返回给integer定义的变量。 PKG_SERVICE.SQL_REGISTER_CONTEXT函数原型为: 1 2 3 DBE_SQL.REGISTER_CONTEXT( ) RETURN INTEGER; PKG_SERVICE.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个CONTEXT,是该CONTEXT中各项操作的结束。如果在存储过程结束时没有调用该函数,则该CONTEXT占用的内存仍然会保存,因此关闭CONTEXT非常重要。由于异常情况的发生会中途退出存储过程,导致CONTEXT未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT函数原型为: 1 2 3 4 PKG_SERVICE.SQL_UNREGISTER_CONTEXT( context_id IN INTEGER ) RETURN INTEGER; 表3 PKG_SERVICE.SQL_UNREGISTER_CONTEXT接口说明 参数名称 描述 context_id 打算关闭的CONTEXT ID号。 PKG_SERVICE.SQL_SET_SQL 该函数用来解析给定游标的查询语句,被传入的查询语句会立即执行。目前仅支持SELECT查询语句的解析,且语句参数仅可通过text类型传递,长度不大于1G。 PKG_SERVICE.SQL_SET_SQL函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_SET_SQL( context_id IN INTEGER, query_string IN TEXT, language_flag IN INTEGER ) RETURN BOOLEAN; 表4 PKG_SERVICE.SQL_SET_SQL接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 query_string 执行的查询语句。 language_flag 版本语言号,目前只支持1。 PKG_SERVICE.SQL_RUN 该函数用来执行一个给定的CONTEXT。该函数接收一个CONTEXT ID,运行后获得的数据用于后续操作。目前仅支持SELECT查询语句的执行。 PKG_SERVICE.SQL_RUN函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_RUN( context_id IN INTEGER, ) RETURN INTEGER; 表5 PKG_SERVICE.SQL_RUN接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID。 PKG_SERVICE.SQL_NEXT_ROW 该函数返回执行SQL实际返回的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。 PKG_SERVICE.SQL_NEXT_ROW函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_NEXT_ROW( context_id IN INTEGER, ) RETURN INTEGER; 表6 PKG_SERVICE.SQL_NEXT_ROW接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 PKG_SERVICE.SQL_GET_VALUE 该函数用来返回给定CONTEXT中给定位置的CONTEXT元素值,该接口访问的是PKG_SERVICE.SQL_NEXT_ROW获取的数据。 PKG_SERVICE.SQL_GET_VALUE函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VALUE( context_id IN INTEGER, pos IN INTEGER, col_type IN ANYELEMENT ) RETURN ANYELEMENT; 表7 PKG_SERVICE.SQL_GET_VALUE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 col_type 任意类型变量,定义列的返回值类型。 PKG_SERVICE.SQL_SET_RESULT_TYPE 该函数用来定义从给定CONTEXT返回的列,该接口只能应用于SELECT定义的CONTEXT中。定义的列通过查询列表的相对位置来标识,PKG_SERVICE.SQL_SET_RESULT_TYPE函数的原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SQL_SET_RESULT_TYPE( context_id IN INTEGER, pos IN INTEGER, coltype_oid IN ANYELEMENT, maxsize IN INTEGER ) RETURN INTEGER; 表8 PKG_SERVICE.SQL_SET_RESULT_TYPE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 coltype_oid 任意类型的变量,可根据变量类型得到对应类型OID。 maxsize 定义的列的长度。 PKG_SERVICE.JOB_CANCEL 存储过程CANCEL删除指定的定时任务。 PKG_SERVICE.JOB_CANCEL函数原型为: 1 2 PKG_SERVICE.JOB_CANCEL( id IN INTEGER); 表9 PKG_SERVICE.JOB_CANCEL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 PKG_SERVICE.JOB_FINISH 存储过程FINISH禁用或者启用定时任务。 PKG_SERVICE.JOB_FINISH函数原型为: 1 2 3 4 PKG_SERVICE.JOB_FINISH( id IN INTEGER, broken IN BOOLEAN, next_time IN TIMESTAMP DEFAULT sysdate); 表10 PKG_SERVICE.JOB_FINISH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 broken boolean IN 否 状态标志位,true代表禁用,false代表启用。根据true或false值更新当前job;如果为空值,则不改变原有job的状态。 next_time timestamp IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。 PKG_SERVICE.JOB_SUBMIT 存储过程JOB_SUBMIT提交一个系统提供的定时任务。 PKG_SERVICE.JOB_SUBMIT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.JOB_SUBMIT( id IN BIGINT, content IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该指定表或者函数的schema,或者在sql语句前添加set current_schema = xxx;语句。 表11 PKG_SERVICE.JOB_SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id bigint IN 否 作业号。如果传入id为NULL,则内部会生成作业ID。 content text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_time timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用pkg_service.job_submit时,该参数可以省略。 示例: 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 CREATE TABLE test_table(a int); CREATE TABLE CREATE OR REPLACE PROCEDURE test_job(a in int) IS BEGIN INSERT INTO test_table VALUES(a); COMMIT; END; / CREATE PROCEDURE SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1'); job_submit ------------ 28269 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); job_submit ------------ 1506 (1 row) CALL PKG_SERVICE.JOB_SUBMIT(NULL, 'INSERT INTO T_JOB VALUES(1); call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); job ------- 14131 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) PKG_SERVICE.JOB_UPDATE 存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.JOB_UPDATE函数原型为: 1 2 3 4 5 PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT); 表12 PKG_SERVICE.JOB_UPDATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 next_time timestamp IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 content text IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。 示例: 1 2 3 4 5 6 7 8 9 10 CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'call userproc();'); job_update ------------ (1 row) CALL PKG_SERVICE.JOB_UPDATE(101, sysdate, 'sysdate + 1.0/1440', 'insert into tbl_a values(sysdate);'); job_update ------------ (1 row) PKG_SERVICE.SUBMIT_ON_NODES 存储过程SUBMIT_ON_NODES创建一个节点上的定时任务,仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SUBMIT_ON_NODES函数原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SUBMIT_ON_NODES( node_name IN NAME, database IN NAME, what IN TEXT, next_date IN TIMESTAMP WITHOUT TIME ZONE, job_interval IN TEXT, job OUT INTEGER); 表13 PKG_SERVICE.SUBMIT_ON_NODES接口参数说明 参数 类型 入参/出参 是否可以为空 描述 node_name text IN 否 指定作业的执行节点,当前仅支持值为'ALL_NODE'(在所有节点执行)。 database text IN 否 数据库实例作业所使用的database,节点类型为'ALL_NODE'时仅支持值为'postgres'。 what text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 nextdate timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 job_interval text IN 否 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd'不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit_on_nodes时,该参数可以省略。 示例: 1 2 3 4 5 SELECT pkg_service.submit_on_nodes('ALL_NODE', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 25376 (1 row) PKG_SERVICE.ISUBMIT_ON_NODES ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 该函数用来返回绑定的数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_ARRAY_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_ARRAY_RESULT( context_id in int, pos in VARCHAR2, column_value inout anyarray, result_type in anyelement ); 表14 PKG_SERVICE.SQL_GET_ARRAY_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 column_value 返回值。 result_type 返回值类型。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 该函数用来返回绑定的非数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VARIABLE_RESULT( context_id in int, pos in VARCHAR2, result_type in anyelement ) RETURNS anyelement; 表15 PKG_SERVICE.SQL_GET_VARIABLE_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 result_type 返回值类型。 父主题: 基础接口
-
PKG_SERVICE PKG_SERVICE支持的所有接口请参见表1。 表1 PKG_SERVICE 接口名称 描述 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 确认该CONTEXT是否已注册。 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 取消所有注册的CONTEXT。 PKG_SERVICE.SQL_REGISTER_CONTEXT 注册一个CONTEXT。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT 取消注册该CONTEXT。 PKG_SERVICE.SQL_SET_SQL 向CONTEXT设置一条SQL语句,目前只支持SELECT。 PKG_SERVICE.SQL_RUN 在一个CONTEXT上执行设置的SQL语句。 PKG_SERVICE.SQL_NEXT_ROW 读取该CONTEXT中的下一行数据。 PKG_SERVICE.SQL_GET_VALUE 读取该CONTEXT中动态定义的列值 PKG_SERVICE.SQL_SET_RESULT_TYPE 根据类型OID动态定义该CONTEXT的一个列。 PKG_SERVICE.JOB_CANCEL 通过任务ID来删除定时任务。 PKG_SERVICE.JOB_FINISH 禁用或者启用定时任务。 PKG_SERVICE.JOB_SUBMIT 提交一个定时任务。作业号由系统自动生成或由用户指定。 PKG_SERVICE.JOB_UPDATE 修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.SUBMIT_ON_NODES 提交一个任务到所有节点,作业号由系统自动生成。 PKG_SERVICE.ISUBMIT_ON_NODES 提交一个任务到所有节点,作业号由用户指定。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 获取该CONTEXT中返回的数组值。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 获取该CONTEXT中返回的列值。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE 该函数用来确认一个CONTEXT是否已注册。该函数传入想查找的CONTEXT ID,如果该CONTEXT存在返回TRUE,反之返回FALSE。 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE函数原型为: 1 2 3 4 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE( context_id IN INTEGER ) RETURN BOOLEAN; 表2 PKG_SERVICE.SQL_IS_CONTEXT_ACTIVE接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS 该函数用来取消所有CONTEXT PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS函数原型为: 1 2 3 PKG_SERVICE.SQL_CLEAN_ALL_CONTEXTS( ) RETURN VOID; PKG_SERVICE.SQL_REGISTER_CONTEXT 该函数用来打开一个CONTEXT,是后续对该CONTEXT进行各项操作的前提。该函数不传入任何参数,内部自动递增生成CONTEXT ID,并作为返回值返回给integer定义的变量。 PKG_SERVICE.SQL_REGISTER_CONTEXT函数原型为: 1 2 3 DBE_SQL.REGISTER_CONTEXT( ) RETURN INTEGER; PKG_SERVICE.SQL_UNREGISTER_CONTEXT 该函数用来关闭一个CONTEXT,是该CONTEXT中各项操作的结束。如果在存储过程结束时没有调用该函数,则该CONTEXT占用的内存仍然会保存,因此关闭CONTEXT非常重要。由于异常情况的发生会中途退出存储过程,导致CONTEXT未能关闭,因此建议存储过程中有异常处理,将该接口包含在内。 PKG_SERVICE.SQL_UNREGISTER_CONTEXT函数原型为: 1 2 3 4 PKG_SERVICE.SQL_UNREGISTER_CONTEXT( context_id IN INTEGER ) RETURN INTEGER; 表3 PKG_SERVICE.SQL_UNREGISTER_CONTEXT接口说明 参数名称 描述 context_id 打算关闭的CONTEXT ID号 PKG_SERVICE.SQL_SET_SQL 该函数用来解析给定游标的查询语句,被传入的查询语句会立即执行。目前仅支持SELECT查询语句的解析,且语句参数仅可通过text类型传递,长度不大于1G。 PKG_SERVICE.SQL_SET_SQL函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_SET_SQL( context_id IN INTEGER, query_string IN TEXT, language_flag IN INTEGER ) RETURN BOOLEAN; 表4 PKG_SERVICE.SQL_SET_SQL接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID query_string 执行的查询语句 language_flag 版本语言号,目前只支持1 PKG_SERVICE.SQL_RUN 该函数用来执行一个给定的CONTEXT。该函数接收一个CONTEXT ID,运行后获得的数据用于后续操作。目前仅支持SELECT查询语句的执行。 PKG_SERVICE.SQL_RUN函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_RUN( context_id IN INTEGER, ) RETURN INTEGER; 表5 PKG_SERVICE.SQL_RUN接口说明 参数名称 描述 context_id 执行查询语句解析的CONTEXT ID PKG_SERVICE.SQL_NEXT_ROW 该函数返回执行SQL实际返回的数据行数,每一次运行该接口都会获取到新的行数的集合,直到数据读取完毕获取不到新行为止。 PKG_SERVICE.SQL_NEXT_ROW函数的原型为: 1 2 3 4 PKG_SERVICE.SQL_NEXT_ROW( context_id IN INTEGER, ) RETURN INTEGER; 表6 PKG_SERVICE.SQL_NEXT_ROW接口说明 参数名称 描述 context_id 执行的CONTEXT ID PKG_SERVICE.SQL_GET_VALUE 该函数用来返回给定CONTEXT中给定位置的CONTEXT元素值,该接口访问的是PKG_SERVICE.SQL_NEXT_ROW获取的数据。 PKG_SERVICE.SQL_GET_VALUE函数的原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VALUE( context_id IN INTEGER, pos IN INTEGER, col_type IN ANYELEMENT ) RETURN ANYELEMENT; 表7 PKG_SERVICE.SQL_GET_VALUE接口说明 参数名称 描述 context_id 执行的CONTEXT ID pos 动态定义列在查询中的位置 col_type 任意类型变量,定义列的返回值类型 PKG_SERVICE.SQL_SET_RESULT_TYPE 该函数用来定义从给定CONTEXT返回的列,该接口只能应用于SELECT定义的CONTEXT中。定义的列通过查询列表的相对位置来标识,PKG_SERVICE.SQL_SET_RESULT_TYPE函数的原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SQL_SET_RESULT_TYPE( context_id IN INTEGER, pos IN INTEGER, coltype_oid IN ANYELEMENT, maxsize IN INTEGER ) RETURN INTEGER; 表8 PKG_SERVICE.SQL_SET_RESULT_TYPE接口说明 参数名称 描述 context_id 执行的CONTEXT ID。 pos 动态定义列在查询中的位置。 coltype_oid 任意类型的变量,可根据变量类型得到对应类型OID。 maxsize 定义的列的长度。 PKG_SERVICE.JOB_CANCEL 存储过程CANCEL删除指定的定时任务。 PKG_SERVICE.JOB_CANCEL函数原型为: 1 2 PKG_SERVICE.JOB_CANCEL( job IN INTEGER); 表9 PKG_SERVICE.JOB_CANCEL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 示例: SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) CALL PKG_SERVICE.JOB_CANCEL(101); job_cancel ------------ (1 row) PKG_SERVICE.JOB_FINISH 存储过程FINISH禁用或者启用定时任务。 PKG_SERVICE.JOB_FINISH函数原型为: 1 2 3 4 PKG_SERVICE.JOB_FINISH( id IN INTEGER, broken IN BOOLEAN, next_time IN TIMESTAMP DEFAULT sysdate); 表10 PKG_SERVICE.JOB_FINISH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 broken Boolean IN 否 状态标志位,true代表禁用,false代表启用。根据true或false值更新当前job;如果为空值,则不改变原有job的状态。 next_time timestamp IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_time不为空值,则更新指定job的next_time值,如果next_time为空值,则不更新next_time值。该参数可以省略,为默认值。 PKG_SERVICE.JOB_SUBMIT 存储过程JOB_SUBMIT提交一个系统提供的定时任务。 PKG_SERVICE.JOB_SUBMIT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.JOB_SUBMIT( id IN BIGINT, content IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该指定表或者函数的schema,或者在sql语句前添加set current_schema = xxx;语句。 表11 PKG_SERVICE.JOB_SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id bigint IN 否 作业号。如果传入id为NULL,则内部会生成作业ID。 context text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_time timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用pkg_service.job_submit时,该参数可以省略。 示例: 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 CREATE TABLE test_table(a int); CREATE TABLE CREATE OR REPLACE PROCEDURE test_job(a in int) IS BEGIN INSERT INTO test_table VALUES(a); COMMIT; END; / CREATE PROCEDURE SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1'); job_submit ------------ 28269 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT(NULL, 'call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); job_submit ------------ 1506 (1 row) CALL PKG_SERVICE.JOB_SUBMIT(NULL, 'INSERT INTO T_JOB VALUES(1); call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); job ------- 14131 (1 row) SELECT PKG_SERVICE.JOB_SUBMIT (101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); job_submit ------------ 101 (1 row) PKG_SERVICE.JOB_UPDATE 存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 PKG_SERVICE.JOB_UPDATE函数原型为: 1 2 3 4 5 PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT); 表12 PKG_SERVICE.JOB_UPDATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 id integer IN 否 指定的作业号。 next_time timestamp IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_time值,否则更新指定job的next_time值。 interval_time text IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval_time值;如果该参数不为空值,会校验interval_time是否为有效的时间类型或interval类型,则更新指定job的interval_time值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 content text IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的content值,否则更新指定job的content值。 示例: 1 2 3 4 5 6 7 8 CALL PKG_SERVICE.JOB_UPDATE(101, 'call userproc();', sysdate, 'sysdate + 1.0/1440'); job_update ------------ (1 row) CALL PKG_SERVICE.JOB_UPDATE(101, 'insert into tbl_a values(sysdate);', sysdate, 'sysdate + 1.0/1440'); job_update ------------ (1 row) PKG_SERVICE.SUBMIT_ON_NODES 存储过程SUBMIT_ON_NODES创建一个所有CN/DN上的定时任务,仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SUBMIT_ON_NODES函数原型为: 1 2 3 4 5 6 7 PKG_SERVICE.SUBMIT_ON_NODES( node_name IN NAME, database IN NAME, what IN TEXT, next_date IN TIMESTAMP WITHOUT TIME ZONE, job_interval IN TEXT, job OUT INTEGER); 表13 PKG_SERVICE.SUBMIT_ON_NODES接口参数说明 参数 类型 入参/出参 是否可以为空 描述 node_name text IN 否 指定作业的执行节点,当前仅支持值为'ALL_NODE'(在所有节点执行)与'CCN'(在central coordinator执行)。 database text IN 否 集群作业所使用的database,节点类型为'ALL_NODE'时仅支持值为'postgres'。 what text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 nextdate timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 job_interval text IN 否 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd'不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit_on_nodes时,该参数可以省略。 示例: 1 2 3 4 5 6 7 8 9 10 select pkg_service.submit_on_nodes('ALL_NODE', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 25376 (1 row) select pkg_service.submit_on_nodes('CCN', 'postgres', 'select capture_view_to_json(''dbe_perf.statement'', 0);', sysdate, 'interval ''60 second'''); submit_on_nodes ----------------- 4973 (1 row) PKG_SERVICE.ISUBMIT_ON_NODES ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin/monitor admin有此权限。 PKG_SERVICE.SQL_GET_ARRAY_RESULT 该函数用来返回绑定的数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_ARRAY_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_ARRAY_RESULT( context_id in int, pos in VARCHAR2, column_value inout anyarray, result_type in anyelement ); 表14 PKG_SERVICE.SQL_GET_ARRAY_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 column_value 返回值。 result_type 返回值类型。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT 该函数用来返回绑定的非数组类型的OUT参数的值,可以用来获取存储过程中的OUT参数。 PKG_SERVICE.SQL_GET_VARIABLE_RESULT函数原型为: 1 2 3 4 5 6 PKG_SERVICE.SQL_GET_VARIABLE_RESULT( context_id in int, pos in VARCHAR2, result_type in anyelement ) RETURNS anyelement; 表15 PKG_SERVICE.SQL_GET_VARIABLE_RESULT接口说明 参数名称 描述 context_id 想查找的CONTEXT ID号。 pos 绑定的参数名。 result_type 返回值类型。 父主题: 基础接口
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格