`
- 浏览:
48768 次
- 性别:
- 来自:
衡阳
-
最近在看存储过程,看得有点郁闷,我们的技术经理大概太牛了,复杂的业务逻辑都用存储过程实现了,不得已。我也得向他看齐,其中有很多DBMS_的,不懂,一个一个学着来:
一、DBMS_LOB
1、SUBSTR(字段,长度,起始位置)
在pl/sql中的sql窗口输入如下sql语句:
select dbms_lob.substr(send_str) from ydkf_interface_log;
读取clob数据时,当clob数据过大时(超过4000),会提示ORA-06502:PL/SQL:numeric or value error: character string buffer too small,可我想在查询的结果集中查看,可使用拆分的方式,算是条条道路通罗马吧:
select
dbms_lob.substr(send_str,1007,1),
dbms_lob.substr(send_str,3000,1008),
dbms_lob.substr(send_str,dbms_lob.getlength(send_str),3001) from ydkf_interface_log where case_no='CK201109221600045614' order by id desc
二、 DBMS_Job包的用法(别处贴来的)
设置初始化参数 job_queue_processes
sql> alter system set job_queue_processes=n;(n>0)
job_queue_processes最大值为1000
查看job queue 后台进程
sql>select name,description from v$bgprocess;
包含以下子过程:
Broken()过程。
change()过程。
Interval()过程。
Isubmit()过程。
Next_Date()过程。
Remove()过程。
Run()过程。
Submit()过程。
User_Export()过程。
What()过程。
1、
Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
这个过程有三个参数:job 、broken与next_date。
PROCEDURE Broken (job IN binary_integer,
Broken IN boolean,
next_date IN date :=SYSDATE)
job参数是工作号,它在问题中唯一标识工作。
broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
2、
Change()过程用来改变指定工作的设置。
这个过程有四个参数:job、what 、next_date与interval。
PROCEDURE Change (job IN binary_integer,
What IN varchar2,
next_date IN date,
interval IN varchar2)
此job参数是一个整数值,它唯一标识此工作。
What参数是由此工作运行的一块PL/SQL代码块。
next_date参数指示何时此工作将被执行。
interval参数指示一个工作重执行的频度。
3、
Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。
这个过程有两个参数:job与interval。
PROCEDURE Interval (job IN binary_integer,
Interval IN varchar2)
job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。
4、
ISubmit()过程用来用特定的工作号提交一个工作。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE ISubmit (job IN binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个
由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。
5、
Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。
PROCEDURE Next_Date(job IN binary_ineger,
next_date IN date)
job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。
6、
Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:
PROCEDURE Remove(job IN binary_ineger);
job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。
已正在运行的工作不能由调用过程序删除。
7、
Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
PROCEDURE Run(job IN binary_ineger)
job参数标识将被立即执行的工作。
8、
使用Submit()过程,工作被正常地计划好。
这个过程有五个参数:job、what、next_date、interval与no_parse。
PROCEDURE Submit ( job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
what参数是将被执行的PL/SQL代码块。
next_date参数指识何时将运行这个工作。
interval参数何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
指示此PL/SQL代码在它第一次执行时应进行语法分析,
而FALSE指示本PL/SQL代码应立即进行语法分析。
9、
User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。
此程序有两个参数:job与my_call。
PROCEDURE User_Export(job IN binary_ineger,
my_call IN OUT varchar2)
job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要
的正文。
10、
What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。
PROCEDURE What (job IN binary_ineger,
What IN OUT varchar2)
job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。
一个简单例子:
创建测试表
SQL> create table test_job(a date);
表已创建。
创建一个自定义过程
SQL> create or replace procedure test_job_pro as
2 begin
3 insert into test_job values(sysdate);
4 end;
5 /
过程已创建。
创建JOB
SQL> variable job1 number; --声明一个job变量
SQL>
SQL> begin
2 dbms_job.submit(:job1,test_job_pro; ',sysdate, 'sysdate+1/24*60 '); --每天1440分钟,即一分钟运行test过程一次
3 end;
4 /
PL/SQL 过程已成功完成。
运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select to_char(a, 'yyyy/mm/dd hh24:mi:ss ') 时间 from a;
时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
在本文中,我们将详细介绍如何使用 Oracle 的 DBMS_JOB 来实现任务计划管理。 任务计划管理的需求 在许多管理系统中,经常会遇到定时执行某项任务的情况。例如,对于数据库的日常备份等耗时长、重复性强的工作,就...
在Oracle数据库中,`DBMS_STATS` 是一个重要的包,它用于收集和管理表、索引和其他数据库对象的统计信息,这些信息用于优化器选择执行查询的最佳执行计划。然而,当出现错误“ORA-04063: package body 'SYS.DBMS_...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
在处理Oracle数据库中使用DBMS_XMLDOM模块创建并导出XML文档时,经常会遇到有关文档编码格式的问题,尤其是如何确保导出的XML文档采用UTF-8编码格式。本文将对这一问题进行详细的探讨,并提供解决方法。 #### 问题...
《IT文档\dbms\Oracle》系列,主要记录了一位DBA在工作中遇到的问题与解决方案,以日记的形式展现了Oracle数据库管理的日常。Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统,其复杂性和灵活性使得DBA的...
1. 角色的创建:在Oracle DBMS中,管理员可以定义不同的角色,这些角色代表了系统中的不同职责或工作职能。例如,可以创建一个“财务管理员”角色,赋予其对财务数据的特定访问权限。角色的创建使得权限管理更为灵活...
总的来说,Oracle的`dbms_xmlgen`包提供了一种便捷的方式,允许开发者在PL/SQL环境中生成XML数据文件。尽管对于大型数据集,这种方法可能不是最高效的,但在小规模应用或测试场景下,它是一个实用且灵活的解决方案。...
标题“DBMS_XPLAN: 显示Oracle执行计划”是一个关于Oracle数据库系统中用于分析SQL查询执行性能的重要工具的讨论。这个工具允许用户查看SQL语句的执行计划,从而理解数据库如何处理这些语句,以及哪些操作可能影响...
在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,比如数据清理、统计报告生成、备份等。 ###...
### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...
Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了生成随机数和随机字符串的功能,广泛应用于各种场景,包括测试、模拟数据生成等。本文将详细介绍DBMS_RANDOM包的四个主要函数及其用法。 1. **dbms_...
其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。下面对各个函数进行举例说明 1. INITIALIZE 用一个种子值来初始化DBMS_RANDOM包。 默认情况下,DBMS_RANDOM包是...
对于偶尔需要进行 重做日志 解释的人(或者记力不是特别强的牛人)来讲,可能不太记得完整的DBMS_...鉴于以上的种种不便,在下对LOGMNER程序包,进行了封装,方便大量使用ORACLE 强大的日志分析工具dbms_logmner.
#### 方法一:利用Oracle 11g中的`dbms_comparison`包 当两张表的数据结构完全相同,并且其中一张表所在数据库版本为Oracle 11g及以上时,可以使用`dbms_comparison`包来进行数据对比。此包提供了非常便捷的方式来...
Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...
在Oracle数据库环境中,Java Sources是一种强大的特性,它允许我们在数据库内部执行Java代码,利用Java的丰富库和API来处理复杂的业务逻辑或者实现特定的功能。Oracle数据库支持存储过程、函数、包等PL/SQL对象,而...