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

oracle存储过程造数据

发布时间: 2022-08-30 19:06:42

① 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;

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

1 CREATE OR REPLACE PROCEDURE 存储过程名
2 IS
3 BEGIN
4 NULL;
5 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体的结束.
存储过程创建语法:
create or replace procere 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围); --vs_msgVARCHAR2(4000);
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

③ 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;

④ oracle编写存储过程把表1中多条数据插入到表2,求高手指教(错误指向插入sql语句的v_name)

1、上面定义的变量是CUS下面写的CUR

2、FOR语句的循环变量是光标,需要从光标中提取相应字段


CURSORCURIS
SELECTNAMEFROMSTU;
BEGIN
FORCINCURLOOP
INSERTINTOSTU_TWO(NAME)VALUES(C.NAME);
COMMIT;
ENDLOOP;
END;

⑤ oracle能否用一个存储过程,做到先创表a,再向a插数据,再通过a生成表b涉及到异步问题,实际

1、存储过程中的内容都是顺序执行的,不会存在你说的a还没有创号,就执行其他sql的情况,你是结合你的实际业务来描述可能出现的情况吧
2、你需求的存储过程如下
create or replace procere prc_test
as
begin
-- 创建表
execute immediate 'create table a (col1)';
-- 向表中插入数据
execute immedaite 'insert into a values(:1)' using 1;

-- 通过a表创建b表
execute immediate 'create table b as select * from a';
end;

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

可通过以下方法:

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

如test表中有如下数据:

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 的存储过程怎么写。

oracle 存储过程的基本语法

1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...

3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;

4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

5.变量赋值
V_TEST := 123;

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;

7.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;

8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

⑧ Oracle希望能有人提供一个简单的存储过程造数据脚本

declare
i number;
begin
for i in 1..1000000
loop
insert into a values(i,'xxx');
end loop;
commit;
end;
/

⑨ oracle数据库存储过程实例

创建存储过程的语句如下:
CREATE[OR REPLACE] PROCEDURE<过程名>
<参数1>,“方式l]<数据类型1>,
<参数2>,[ 方式2]<数据类型2>,
……)
IS|AS (is或as完全等价)
BEGIN
PL/SQL过程体
END<过程名>

例如,下面是一个删除表的存储过程:

--参数:tableName 要删除的表名
create or replace procere del_table(tableName varchar2) as
--定义变量
sql_del_table long;
begin
--构造sql语句
sql_del_table := 'drop table ' || tableName;
--执行
EXECUTE IMMEDIATE sql_del_table;

end del_table;

热点内容
安卓怎么设置照片格式 发布:2024-12-27 11:50:05 浏览:168
逍遥绝脚本 发布:2024-12-27 11:44:59 浏览:430
我的世界哪个服务器可以1v1 发布:2024-12-27 11:43:37 浏览:933
c语言关键字有 发布:2024-12-27 11:41:54 浏览:367
gccc语言编译命令 发布:2024-12-27 11:41:06 浏览:188
欧美版思域是什么版本配置 发布:2024-12-27 11:20:45 浏览:251
具医院的wifi密码是什么 发布:2024-12-27 11:20:07 浏览:77
dll服务器如何重启 发布:2024-12-27 11:19:58 浏览:953
安卓怎么把视频变成模糊 发布:2024-12-27 11:18:37 浏览:962
oracle分页sql怎么写 发布:2024-12-27 11:02:02 浏览:846