当前位置:首页 » 存储配置 » oracle存储过程插入数据

oracle存储过程插入数据

发布时间: 2022-04-22 20:13:40

1. oracle存储过程插入一条数据,运行之后,数据不能插入

这种情况属于插入数据后,没有提交(commit),导致表被锁,所以需要进行提交(commit)或者回滚(rollback)操作。

如果当前session已关闭,可通过如下方法杀掉进程。

1、生成Kill Session语句

sql">select'altersystemkillsession'''||SID||','||SERIAL#||''';'from
(
selectdistincta.sid,a.Serial#,status,machine,LOCKWAIT,logon_time
fromv$sessiona,v$locked_objectb
where(a.status='ACTIVE'ora.status='INACTIVE')
anda.sid=b.session_id
andb.ORACLE_USERNAME='XYHISTEST'--加上用户名是避免把其他系统的会话也关闭,以免伤及无辜

)

2、批量执行第一步生成的语句

altersystemkillsession'sid,serial#';

2. ORACLE存储过程创建临时表并插入数据。

存储过程创建表后,在编译阶段数据库中并没有该表。这时向表中插入数据,会提示表不存在。所以,插入语句要赋值到变量里,通过e来执行。

3. oracle数据库如何利用存储过程向表中添加数据

实际上存储过程向表中插入数据和sql执行的区别是不大的,只不过是存储过程是用loop等循环插入,之后顺序执行sql语句,不用命令行执行。

_data_4_pressure_3
is

--Result1VARCHAR2(50);
VAR_numnumber;
begin
VAR_num:=1;

while
VAR_num<1000000
LOOP
insertintorp_trans_log_day
(trans_time,
trans_province,
trans_type,
score_range,
rule_name,
trans_num)
selectto_date('2013/10/29','yyyy-mm-dd'),
round(dbms_random.value(1,300))||'省',
round(dbms_random.value(1,800))||'类型',
round(dbms_random.value(1,100))||'风险分值',
round(dbms_random.value(1,300))||'规则名称',
'1'
fromal;
commit;
VAR_num:=VAR_num+1;
endloop;

endinsert_data_4_pressure_3;

4. Oracle 存储过程:如何将查询到的数据插入到另一个用户名下的一张表中

看你的这两个用户是不是在同一个数据库中,如果不是同一个数据库,可以建立一个DBLINK来连接;如果是在同意个库内可以这样写:
insert into A(column1,column2,column3)
select bbb.B.columns1,bbb.B.columns2,bbb.B.columns3 from bbb.B
where bbb.B.columns1=0;

5. 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;

6. 用oracle存储过程将一张表的数据查出插入另一张表

1、创建测试表,

create table test_tbl_1(id number, value varchar2(20));

create table test_tbl_2(id number, value varchar2(20));

7. oracle存储过程怎样批量插入新数据

需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);

存储过程实现
create or replace procere proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;

begin
proc_casekey_upstate();
end;

测试发现生成一千万条数据用了14分钟左右,性能还是可以了,如果先去掉TMP_NUM_STATUS_ID的外键估计更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from al connect by level <= 1000000;

8. oracle存储过程怎么插入其他数据库数据

启动集群
rhcs1:
service
cman
start
rhcs2:
service
cman
start
注:此时在rhcs1上执行完命令之后,在rhcs2也要执行,不然rhcs1找不到rhcs2,就会将rhcs2
fence掉,重启,重启也没关系,重启好了重新执行命令加入集群就行了!

9. ORACLE 存储过程插入数据排序混乱

从给出的程序看,执行完程序后,通过xx字段排序查询就可以了。不过给出的程序有点问题,是个死循环。(to_date('01/01/2010','mm/dd/yyyy')< to_date('12/31/2015','mm/dd/yyyy')) 这里不含变量,因此这个条件永远满足。改成如下程序就可以了。
DECLARE

adddays NUMBER:=0;

i NUMBER:=5;

--步长
BEGIN

WHILE to_date('01/01/2010','mm/dd/yyyy')+adddays<=

to_date('12/31/2015','mm/dd/yyyy')

LOOP

INSERT INTO
XX(XX)values(to_date('01/01/2010','mm/dd/yyyy')+adddays);

adddays:=adddays+i;

END loop;
END;
运行结果:

热点内容
苹果摄像机为什么比安卓清晰 发布:2024-11-19 08:20:20 浏览:830
为什么安卓手机下载不了微信 发布:2024-11-19 08:19:37 浏览:836
android情景分析 发布:2024-11-19 08:19:36 浏览:190
系统存储设备容量 发布:2024-11-19 08:05:28 浏览:994
向外访问 发布:2024-11-19 07:50:21 浏览:555
androidbase64图片 发布:2024-11-19 07:48:45 浏览:727
搭建小说网站国外服务器 发布:2024-11-19 07:42:49 浏览:799
在家如何更改网络密码 发布:2024-11-19 07:36:21 浏览:797
反编译redis里的数据 发布:2024-11-19 07:31:59 浏览:858
android音乐播放器的实现 发布:2024-11-19 07:12:44 浏览:969