当前位置:首页 » 服务存储 » oracle存储过程延时
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle存储过程延时

发布时间: 2022-11-03 01:06:53

① oracle中存储过程执行很长时间,用了三个游标。

不用看执行计划都知道慢了,
for c1
for c2
for c3
这种没有任何条件的三重循环的时间复杂度为C1记录数*C2记录数*C3记录数,你得尽量减少循环次数,能用sql就不要用游标循环了

② oracle定时执行存储过程的时间区间问题

目测, 你的存储过程, 需要在 下面这些时刻运行:
1:00
3:00
5:00
7:00
16:00
18:00
20:00
22:00
CREATE OR REPLACE PROCEDURE other_proc
AS
vHour VARCHAR(2);
BEGIN
vHour := TO_CHAR(SYSDATE, 'HH24');
IF vHour = '01' OR vHour = '03' OR vHour = '05' OR vHour = '07'
OR vHour = '16' OR vHour = '18' OR vHour = '20' OR vHour = '22' THEN
-- 调用你那个存储过程.
-- 由于没有代码, 暂时写 NULL;
NULL;
END IF;
END;
/

variable jobno number;
begin
dbms_job.submit(:jobno, 'other_proc;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')');
commit;
end;
/

③ oracle存储过程执行速度很慢是什么原因

解决办法:你需要对你的表根据查询条件设计相应的索引,有时候根据需要可能一个表你需要建立好几个索引都是有可能的。然后再执行,你会发现原来要30几秒的现在零点几秒就可以搞定了,这跟使用游标没什么关系。游标的使用完全由你的应用需要决定,我相信能不用的你肯定不会选择使用游标处理,一般是实在没办法的情况下才选择游标去做。 你查询慢的原因是你在存储过程中执行的话,没有索引时,他会一条一条查知道把80几万条数据全部扫描一遍直到查完了你才看到一个结果,但是你在外面单独执行很快的原因是plsql他会首先去查查到几条数据就先给你返回来,所以你马上就看到结果了,但实际上查询也并没有结束,你要是数据很多的情况下你往下拉,你会发信很慢,其实查询过程根本就还没有结束。 总之写存储过程第一步是会写,第二步是要做好优化,否则当你的数据量很大的时候你的过程写的不好的话问题会马上暴露出来

④ Oracle数据库的存储过程怎么写

Oracle存储过程基本语法:

CREATEORREPLACEPROCEDURE存储过程名
IS
BEGIN
NULL;
END;

解释:

行1:
CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;
行2:
IS关键词表明后面将跟随一个PL/SQL体。
行3:
BEGIN关键词表明PL/SQL体的开始。
行4:
NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
行5:
END关键词表明PL/SQL体的结束。


⑤ Oracle 延时执行问题求指教:

使用dbms_lock.sleep(10);实现延时,本句子是等待10秒钟,具体想等待的时间,你可以从表中查询,再使用参数传递,即可实现。

⑥ ORACLE 存储过程是什么 它的用处,好处是什么概念性的东西多点。。

定义:存储过程(Stored Procere )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。
优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。

简单说,你在你的机器上写了个存储过程,这个存储过程像那些表里的数据一样被放在遥远的数据库服务器当中,但是它又是可执行的代码,其他能连到数据库服务器的用户,可以调用你写的存储过程
它的作用是隐藏细节,就是说,你写的存储过程代码可能很复杂,但是其他人调用它却很简单,不用具体知道它是如何做的,且一次能完成多个指令

oracle有系统存储过程和自定义存储过程2种存储过程。
系统存储过程就是由oracle预先提供的一组完成特定功能的存储过程,安装完oracle就有了。
自定义存储过程就是存在oracle数据库里由一组plsql语句组成的自定义过程(procere)。它可以供其它oracle自定义存储过程、自定义函数和job调用或者由客户端程序调用。

⑦ oracle 怎么存储过程在执行中等待5秒

dbms_lock.sleep(5000)

⑧ oracle数据库存储过程执行慢时如何优化

在oracle中
不关是执行sql还是存储过程,当你第一次执行的时候需要对相关语句进行相关权限、对象等分析,这个过程会产生执行计划,叫做硬解析,如果分析通过,之后将语句转化成ascii等效数字码,再通过hash算法得到散列值,然后检查库缓存中是否存在同样hash值的语句。
如果存在,就是软解析.然后就执行语句得出结果.所以第一次执行的时候要是硬解析,速度较慢,而第二次已经以后多次执行的时候是软解析,速度较快.大概就这样
如果要详细说
这东西几个钟头都说不完的.

⑨ ORACLE存储过程执行很慢!

你把你的游标拿出来,看一下执行计划,如果游标都慢的话,那就考虑是否加索引,先让游标执行效率通过再看过程里的具体SQL。我加你的SQL看看。

⑩ Oracle 存储过程 问题:

这个最简单的方法,但会出现一些问题
update trainingclass set trianingplanid = (DEPARTMENT_SEQ.currval) where id like T_PlanDetail;

用这种方式试一下
update trainingclass set trianingplanid = (DEPARTMENT_SEQ.currval) where ','||to_char(id)||',' like ‘,’||T_PlanDetail||',';