当前位置:首页 » 存储配置 » oracle存储过程更新

oracle存储过程更新

发布时间: 2022-06-11 12:26:53

⑴ Oracle存储过程,更新大量数据,如何循环分批次提交

可通过以下方法:

以100条数据为例,如果海量数据可参考。

如test表中有如下数据:

sql">declare
iint;--定义变量
v_countint;--定义变量
v_loopint;--定义变量
begin
selectcount(*)intov_countfromtest;--计算表内数据总数
selectceil(v_count/10)intov_loopfromal;--计算需要循环次数
i:=1;--为i赋值
whilei<=v_looploop--循环退出条件
updatetestsetbegintime=<=10;--执行更新
commit;--提交
i:=i+1;--i依次加1
endloop;--结束循环
end;

⑵ ORACLE中,写一个存储过程来更新表中的某个字段值

给你思路, 首先查出表中总数 ,保存总数, 然后定义一个当前条数,从0开始,每次调用给它加5000。update语句执行则用rownum,跟你保存的当前条数作为条件判断.

⑶ oracle 更新的存储过程怎么写

UPDATETESTOPT1
SETDEVICE_NO=
(SELECTRN
FROM(SELECTNAME,ROWNUMRN
FROM(SELECTDISTINCTNAMEFROMTESTOP))T2
WHERET1.NAME=T2.NAME);

COMMIT;

⑷ ORACLE存储过程中更新变量值的语句

oracle的pl/sql采用的是类似pascal的语法,所以赋值语句为:=
r_LoseID_Flag 是变量吗?那应该这样:
r_LoseID_Flag:='N';

⑸ oracle 存储过程插入或更新数据

create or replace trigger ggxx_s_update
BEFORE update on up_org_station
for each row
declare
-- local variables here
PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN
update up_org_station_tmp
SET 字段1= :NEW.字段1,
--********
-- 剩下的字段你自己写 up_org_station_tmp 表结构与up_org_station一致
WHERE up_org_station_tmp.id = :OLD.id
COMMIT;
GGXX; --存储过程中 up_org_station 改为 up_org_station_tmp
COMMIT;
end ggxx_s_update;

⑹ Oracle批量更新在存储过程中执行很慢,但单独执行很快

  • 检查被更新字段和条件字段是否添加索引

  • 重建索引

  • 检查数据库临时表空间是否已满,已满手动清空(新建临时表空间,然后重新绑定,然后删除原临时表空间)

⑺ oracle 包中的存储过程 能否实现 单个的更新或者添加

这不可能,更新编译package时,需要在这整个包上申请锁,如果是正在运行的package,你可能申请不到这个锁。如果这是一个被频繁调用的package,可能你就完不成这个任务。为了保证一致性,oracle不允许你这么做

⑻ Oracle存储过程的更新插入问题。

--向TESTSQL插入TESTSQL不存在的数据
INSERTINTOTESTSQL
(ID,NAME)
SELECTID,NAME
FROMTEST@SQLLINKAA
WHERENOTEXISTS(SELECTIDFROMTESTSQLBBWHEREBB.ID=AA.ID);
--修改TESTSQL
UPDATETESTSQLAA
SETAA.NAME=
([email protected]=AA.ID);

我觉得有点没必要写存储过程,上面两条sql完全可以实现你的需求,如果非要写成存储过程,按照上面两条sql改写就可以了

⑼ oracle存储过程更新一段时间的数据,给定一个时间,更新这个时间之后的一段时间的表中一些字段的数据

CREATE OR REPLACE PROCEDURE test_xh(vi_date IN VARCHAR2,vi_rc IN NUMBER)
IS
v_date VARCHAR2(8);
e_date VARCHAR2(8);
b_date VARCHAR2(8);
BEGIN
v_date := vi_date;
b_date := substr(v_date,1,6)||'01';
e_date := '20130210';
--更新指定日期的日产量
UPDATE test_1 a SET a.rc = vi_rc WHERE a.reportdate = v_date;
COMMIT;

--循环开始,判断当前日期大于截止日期时跳出,小于时更新月累计
LOOP
IF v_date>e_date THEN
EXIT;
END IF;
UPDATE test_1 a SET a.ycl=(
SELECT SUM(b.rc) from test_1 b WHERE b.reportdate>=b_date AND b.reportdate<=v_date )
WHERE a.reportdate = v_date;
COMMIT;

v_date:=to_char(to_date(v_date,'YYYYMMDD')+1,'YYYYMMDD') ;

END LOOP;

END;

⑽ oracle利用存储过程更新数据,怎么优化

大数据量表尽量要避免全表扫描,全部扫描会按顺序每条记录扫描,对于>100万数据表影响很大。
Oracle中通过RowID访问数据是最快的方式
对字段进行函数转换,或者前模糊查询都会导致无法应用索引而进行全表扫描
对Oracle共享池和缓冲区中的Sql必须要大小写都完全用上才能够匹配上!

热点内容
河南服务器cpu散热片云空间 发布:2024-05-22 08:40:10 浏览:126
小陈访问 发布:2024-05-22 08:23:18 浏览:221
ftp上传文件shell 发布:2024-05-22 08:18:05 浏览:876
安卓airpords降噪怎么弄 发布:2024-05-22 08:18:01 浏览:492
se脚本 发布:2024-05-22 08:09:07 浏览:964
怎么删除linux 发布:2024-05-22 08:04:50 浏览:149
go和python 发布:2024-05-22 07:58:26 浏览:237
at24c02存储芯片的参考文献 发布:2024-05-22 07:28:26 浏览:727
微信apiphp 发布:2024-05-22 07:26:49 浏览:148
编译kernel的流程 发布:2024-05-22 07:26:47 浏览:939