当前位置:文档之家› ORACLE系统包介绍

ORACLE系统包介绍

Oracle 系统包DBMS_OUTPUTa)启用i. dbms_output.enable(buffer_size in integer default 20000);ii. set serveroutput on;b)禁用i. dbms_output.disable;c)PUT和PUT_LINEi. PUT:所有信息显示在同一行ii. PUT_LINE信息显示后,自动换行d)NEW_LINE用于在行的尾部追加行结束符,一般用PUT同时使用e)GET_LINE和GET_LINESi. DBMS_OUTPUT.GET_LINE(li ne 0UTVARCHAR2,status OUT INTEGER)用于取缓冲区的单行信息ii. DBMS_OUTPUT.GET_LINES(lines OUT chararr,numlies IN OUT INTEGER) 用于取得缓冲区的多行信息DBMS_JOBa)SUBMIT用于建立一个新作业语法DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE DEFATULT SYSDATE, interval IN VARCHAR2 DEFAULT ' NULL' ,no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULTany_instance, force IN DEFAULT FALSE);例子VAR jobno NUMBER;BEGINDBMS_JOB.SUBMI(:jobno,'pro_hrs101d0_ins_hrs101t0', sysdate,‘sysdate+1 ');b)REMOVE!于删除作业队列中的特定作业语法:DBMS_JOB.REMOVE(jov IN BINARY_INTEGER);例子:DBMS_JOB.REMOVE(10);--删除JOB号为10 的JOBc)CHANGE用于改变与作业相关的所有信息语法:DBMS_JOB.CHANGE(job IN BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE,interval IN VARCHAR2, instance IN BINARY_INTEGER DEFAULT NULL, force INBOOLEAN DEFAULT FALSE);例子:execute dbms_job.change(2,null,null, 'sysdate+7')-修改2 号job 的间隔时间为7 天d)WHA:T 用于改变作业要执行的操作语法:DBMS_JOB.WHAT(job IN BINARY_INTEGER,what IN VARCHAR2);e)NEXT_DAT:用于改变作业的下次运行日期语法:DBMS_JOB.NEXT_DATE(job in BINARY_INTEGER,next_date IN DATE);f)INSTANCE用于改变运行作业的例程语法:DBMS_JOB.INSTANCE(job IN BINARY_INTEGER, INSTANCE IN BINARY_INTEGER,force IN BOOLEAN DEFAULT FALSE);g)INTERVAL用于改变作业的运行时间间隔语法:DBMS_JOB.INTERVAL(job IN BINARY_INTEGER,interval IN VARCHAR2);h)BROKEN用于设置作业的中断标记.当中断了作业之后,作业将不会被运行语法:DBMS_JOB.BROKEN(job IN BINARY_INTEGER,broken IN BOOLEAN,next_date IN DATE DEFAULT SYSDATE);i)RUN用于运行已存在的作业语法:DBMS_JOB.RUN(jobin BINARY_INTEGER,force IN BOOLEANDEFAULTFALSE); 三、DBMS_PIPE概述:在同一例程的不同会话之间的管道通信a)CREATE_PIPE用于建立公用或私有管道.如果参数private 为TRUE则为私有管道语法:DBMS_PIPE.CREATE_TYPE(pipename IN VARCHAR2,-- 指定管道的名称maxpipesize IN INTEGER DEFAULT 8192,--指定管道消息的最大尺寸private IN BOOLEAN DEFAULT TRUE) --TRUE 为私有,FALSE 为公用REURN INTEGER;--如果返回为0,则管道建立成功,否则为建立管道失败b)PACK_MESSAG用于将消息写入到本地消息缓冲区。

语法:DBMS_PIPE.PACK_MESSAGE(item IN VARCHAR2/NCHAR/NUMBER/DATE);DBMS_PIPE.PACK_MESSAGE_RAW(item IN RAW); DBMS_PIPE.PACK_MESSAGE_ROWID(itemIN ROWID);c)SEND_MESSAG用于将本地消息缓冲区的内容发送到管道语法:DBMS_PIPE.SEND_MESSAGE(pipename IN VARCHAR2,timeout IN INTEGER DEFAULT MAXWAIT,-- 指定发送消息的超时时间maxpipesize IN INTEGER DEFAULT 8192)RETURN INTEGER;-- 如果返回为0,则发送成功,1为超时,3 为出现中断d)RECEIVE_MESSAG囲于接收管道消息,并将消息写入本地消息缓冲区语法:DBMS_PIPE.RECEIVE_MESSAGE(pipename IN VARHCAR2,timeout IN INTEGER DEFAULT MAXWAIT) RETURN INTEGER;-- 同SEND_MESSAGE表示本地缓冲区不能容纳管道消息e)NEXT_ITEM_TYPE确定本地消息缓冲区下项的数据类型,在调用RECEIVE_MESSAGE 之后调用该函数语法:DBMS_PIPE.NEXT_ITEM_TYPE RETURN INTEGEf如果返回为0,表示管道没有任何消息,6-NUMBE,R 9-ARCHAR,2 11-ROWID,12-DATE,23-RAWf)UNPACK_MESSAGE用于将消息缓冲区的内容写入到变量中,在使用函数RECEVIE_MESSAG接收管道消息之后使用取得消息缓冲区的消息,每次取一条消息语法:DBMS_PIPE.UNPACK_MESSAGE(item OUT VARCHAR2/NCHAR/NUMBER/DATE);DBMS_PIPE.UNPACK_MESSAGE_RAW(item OUT RAW);DBMS_PIPE.UNPACK_MESSAGE_ROWID(item OUT ROWID);g)REMOVE_PIPE用于删除已经建立的管道语法:DBMS_PIPE.REMOVE_PIPE(pipename IN VARCHAR2) RETURN INTEGER;h)PURG:E 用于清除管道中的内容语法:DBMS_PIPE.PURGE(pipename IN VARCHAR2);i)RESET_BUFFER用于复位管道缓冲区。

在使用新管道之前应该复位管道缓冲区语法:DBMS_PIPE.REST_BUFFER;j)UNIQUE_SESSION_NAM用于为特定会话返回唯一的名称,名称最大长度为30字节语法:DBMS_PIPE.UNIQUE_SESSION_NAME();四、DBMS_ALERT概述:适用于生成并传递数据库预警信息。

合理使用包和数据库触发器,可以使得在和生特定数据库事件时将信息传递给应用程序。

a)REGISTER注册预警事件语法:DBMS_ALERT.REGISTER(name IN VARCHAR2)b)REMOVE删除会话不需要的预警事件语法:DBMS_ALERT.REMOVE(name IN VARCHAR2);c)REMOVEALL删除当前会话所有已经注册的预警事件语法:DBMS_ALERT.REMOVEALL();d)SET_DEFAULT:S设置检测预警事件的时间间隔,默认时间间隔为5秒语法:DBMS_ALERT.SET_DEFAULTS(sensitivity IN NUMBER);e)SIGNAL指定预警所对应的预警消息事件语法:DBMS_ALERT.SIGNAL( name IN VARCHAR2,message IN VARCHAR2);f)WAITAN Y等待当前会话的任何预警事件,并且在预警事件发生时输出相应信息语法:DBMS_ALERT.WAITANY( name OUT VARCHAR2, message OUT VARCHAR2, status OUT INTEGER,-- 返回0 表示发生了预警事件,1 表示超时timeout IN NUMBERDEFAULT MAXWAIT);-- 设置等待预警事的超时时间g)WAITON:E 等待当前会话的特定预警事件,并且在发生预警事件时输出预警消息语法:DBMS_ALERT.WAITONE( name OUT VARCHAR2, message OUT VARCHAR2, status OUTINTEGER,-- 返回0 表示发生了预警事件,1 表示超时timeout IN NUMBERDEFAULT MAXWAIT);-- 设置等待预警事的超时时间五、DBMS_SESSION概述:提供使用PL/SQL实现ALTERSESSION命令,SET ROLE命令和其他会话住处的方法a)SET_INENTIFIER:该过程用于设置会话的客户ID号语法:DBMS_SESSION.SET_IDENTIFIER(client_id VARCHAR2);b)SET_CONTEX该过程用于设置应用上下文属性语法:DMBS_SESSION.SET_CONTEXT(namespace VARCHAR2,-- 指定应用上下文的命名空间attribute VARCHAR2,-- 指定应用上下文的属性value varchar2);-- 指定属性值DMBS_SESSION.SET_CONTEXT(namespace VARCHAR2, attribute VARCHAR2, value varchar2,username VARCHAR2,-- 指定应用上下文的用户名属性client_id VARCHAR2);c)CLEAR_CONTEX用:于清除应用上下文的属性设置d)CLEAR_IDENTIFIER 删除会话的set_clie nt_ide)SET_ROLE激活或禁止会话角色,与SQL语句的SET ROLE作用相同f)SET_SQL_TRAC激活或禁止当前会话的SQL>踪,同ALTERSESSIONSET SQL_TRACEg)SET_NLS设置NLS特征,同ALTER SESSION SET <nls_param>=<value>h)CLOSE_DATABASE_LINK:闭已经打开的远程数据库链i)SET_PACKAG复位当前会话的所有包,并且会释放包状态j)MODIFY_PACKAGE_STA用于修改当前会话的PL/SQL程序单元的状态k)UNIQUE_SESSIO N」D返回当前会话的唯一标识符l)IS_ROLE_ENABLED确定当前会话是否激活了特定角色m)IS_SESSION_ALIVE:确定特定会话是否处于活动状态n)SET_CL0SE_CACHED_0PEN_CURSOR或关闭close_cached_open_cursorso)FREE_UNUSED_USER_MEM在RY亍了大内存操作之后回收未用内存p)LIST_CONTEXT返回当前会话的命名空间和上下文列表q)SWITCH_CURRENT_CONSUMER_G改O!当前会话的资源使用组六、DBMS_RLS概述:用于实现清细访问控制(VPD:虚拟专用数据库),并且精细访问控制是通过在SQL 语句中动态增加谓词(where 子句)来实现。

相关主题