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存儲過程創建臨時表並插入數據。
你這個語法是不對的
你create
table
as
select
的時候是不能指定列的數據類型,因為你是根據查詢結果創建一個表,列名和數據類型都是由查詢結果定的,或者你可以
create
table
然後
insert
into
table
select
...
改成下面這樣
create
or
replace
procere
test_proc
as
begin
execute
immediate
'
create
global
temporary
table
T_AB
as
select
A.id_,
A.name_,
B.num_
from
T_A
A,
T_B
B
where
A.id_=B.id_';
end;
㈢ ORACLE存儲過程創建臨時表並插入數據。
存儲過程創建表後,在編譯階段資料庫中並沒有該表。這時向表中插入數據,會提示表不存在。所以,插入語句要賦值到變數里,通過e來執行。
㈣ 怎麼樣利用存儲過程實現(oracle )的添加、刪除、查詢、修改啊
列個表,里邊我一樣給你寫個例子,你看著學學,我盡量給你做出注釋
--建一個學生表
create table student (id int,name varchar2(10));
--插入兩條測試數據
insert into student values (1,'張三');
insert into student values (2,'李四');
commit;
-------------用存儲過程添加id為3,姓名為王五的學生-----------
create or replace PROCEDURE P_INSERT
(v_id int,--定義id變數
v_name varchar2--定義姓名變數)
is
begin
insert into student values (v_id,v_name);--執行插入操作
commit;
end;
執行的時候用下邊的
BEGIN
p_insert(3,'王五');
END;
然後select * from student;
你會發現多了3 王五 這條數據
---------------用存儲過程刪除id為3的學生------------
create or replace PROCEDURE P_DELETE
(v_id int)--定義變數id
is
begin
delete from student where id=v_id;--執行刪除操作
commit;
end;
執行
BEGIN
p_delete(3);
END;
執行完上邊後執行
select * from student;
你會發現id為3的學生沒了
---------------用存儲過程查詢id為2的學生姓名------------
create or replace PROCEDURE P_SELECT
(v_id int)--定義輸入變數id
is
v_name varchar2(10);--定義輸出變數name
begin
select name into v_name from student where id=v_id;--執行查詢
dbms_output.put_line('學生姓名為:'||v_name);--輸出結果
end;
執行
BEGIN
p_select(2);
END;
輸出的結果就是id為2的學生姓名
-----------用存儲過程查詢id為1的學生姓名修改為趙六----------
create or replace PROCEDURE P_UPDATE
(v_id int,--定義要修改的id
v_name varchar2)--定義要修改後的名字
is
begin
update student set name=v_name where id=v_id;--執行修改操作
commit;
end;
執行
BEGIN
P_UPDATE(1,'趙六');
END;
然後你再
select * from student;
你會發現id為1的已經為趙六了
上邊這些都是最簡單的存儲過程,在實際過程中肯定沒這么簡單
還有,我讓你執行的
BEGIN
P_UPDATE(1,'趙六');
END;
這種東西可以當做oracle的job調用,可以定時執行
再有不懂的你再問吧,上邊的僅做參考
累死我了,哈哈
㈤ oracle存儲過程循環插數據
有以下幾個步驟。
在表account中循環插入數據,id從1001到1005。createor
replace
procere
test
is--存儲過程,名稱為test。v_id
int;
--聲明變數。begin。v_id
:=1001;
--ACCOUNT_ID從1001插到1005。while
v_id
<=1005--設置插入的次數。loop。
㈥ Oracle中的存儲過程如何添加更新數據
添加更新數據跟一般的sql一樣的寫法啊,唯一差別是變數、傳參的寫法,比如
select
count(1)
into
v_count
from
table
a
where
a.clct_day
=
p_clct_day;
這里v_count就是定義的一個變數,p_clct_day就是過程傳入的時間參數
㈦ 用oracle存儲過程將一張表的數據查出插入另一張表
1、創建測試表,
create table test_tbl_1(id number, value varchar2(20));
create table test_tbl_2(id number, value varchar2(20));

㈧ oracle用存儲過程插入一條數據(用序列實現)
什麼意思?其中一個欄位是用用序列產生?直接insert into table_a(a,b) values(seq.nextval,sysdate);commit;
㈨ 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;
